From Gary Chernega (IBM)
This patch adds x, y, and z offsets to the load-xml command. If you had a prim at 100,100,20 thats where it would get loaded everytime. This patch lets you place it at an offset from 100,100,20.. as such: load-xml <filespec> -newUI 3 1 2 Loading the prim at 103, 101, 22afrisby
parent
71fd737a66
commit
9c81b8a430
|
@ -42,6 +42,7 @@ using OpenSim.Region.Environment;
|
||||||
using OpenSim.Region.Environment.Interfaces;
|
using OpenSim.Region.Environment.Interfaces;
|
||||||
using OpenSim.Region.Environment.Scenes;
|
using OpenSim.Region.Environment.Scenes;
|
||||||
using OpenSim.Region.Physics.Manager;
|
using OpenSim.Region.Physics.Manager;
|
||||||
|
using libsecondlife;
|
||||||
using Mono.Addins;
|
using Mono.Addins;
|
||||||
using Mono.Addins.Description;
|
using Mono.Addins.Description;
|
||||||
|
|
||||||
|
@ -664,6 +665,7 @@ namespace OpenSim
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case "load-xml":
|
case "load-xml":
|
||||||
|
LLVector3 loadOffset = new LLVector3(0, 0, 0);
|
||||||
if (cmdparams.Length > 0)
|
if (cmdparams.Length > 0)
|
||||||
{
|
{
|
||||||
bool generateNewIDS = false;
|
bool generateNewIDS = false;
|
||||||
|
@ -672,13 +674,20 @@ namespace OpenSim
|
||||||
if (cmdparams[1] == "-newUID")
|
if (cmdparams[1] == "-newUID")
|
||||||
{
|
{
|
||||||
generateNewIDS = true;
|
generateNewIDS = true;
|
||||||
}
|
}
|
||||||
|
if (cmdparams.Length > 2)
|
||||||
|
{
|
||||||
|
loadOffset.X = (float)Convert.ToDecimal(cmdparams[2]);
|
||||||
|
if (cmdparams.Length > 3) { loadOffset.Y = (float)Convert.ToDecimal(cmdparams[3]); }
|
||||||
|
if (cmdparams.Length > 4) { loadOffset.Z = (float)Convert.ToDecimal(cmdparams[4]); }
|
||||||
|
m_log.Error("loadOffsets <X,Y,Z> = <" + loadOffset.X + "," + loadOffset.Y + "," + loadOffset.Z + ">");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
m_sceneManager.LoadCurrentSceneFromXml(cmdparams[0], generateNewIDS);
|
m_sceneManager.LoadCurrentSceneFromXml(cmdparams[0], generateNewIDS, loadOffset);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
m_sceneManager.LoadCurrentSceneFromXml(DEFAULT_PRIM_BACKUP_FILENAME, false);
|
m_sceneManager.LoadCurrentSceneFromXml(DEFAULT_PRIM_BACKUP_FILENAME, false, loadOffset);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|
|
@ -885,9 +885,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
prim.OnPrimCountTainted += m_LandManager.setPrimsTainted;
|
prim.OnPrimCountTainted += m_LandManager.setPrimsTainted;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadPrimsFromXml(string fileName, bool newIdsFlag)
|
public void LoadPrimsFromXml(string fileName, bool newIdsFlag, LLVector3 loadOffset)
|
||||||
{
|
{
|
||||||
m_sceneXmlLoader.LoadPrimsFromXml(fileName, newIdsFlag);
|
m_sceneXmlLoader.LoadPrimsFromXml(fileName, newIdsFlag, loadOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SavePrimsToXml(string fileName)
|
public void SavePrimsToXml(string fileName)
|
||||||
|
|
|
@ -160,9 +160,9 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
CurrentOrFirstScene.SavePrimsToXml(filename);
|
CurrentOrFirstScene.SavePrimsToXml(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadCurrentSceneFromXml(string filename, bool generateNewIDs)
|
public void LoadCurrentSceneFromXml(string filename, bool generateNewIDs, LLVector3 loadOffset)
|
||||||
{
|
{
|
||||||
CurrentOrFirstScene.LoadPrimsFromXml(filename, generateNewIDs);
|
CurrentOrFirstScene.LoadPrimsFromXml(filename, generateNewIDs, loadOffset);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void SaveCurrentSceneToXml2(string filename)
|
public void SaveCurrentSceneToXml2(string filename)
|
||||||
|
|
|
@ -23,7 +23,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_regInfo = regionInfo;
|
m_regInfo = regionInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void LoadPrimsFromXml(string fileName, bool newIDS)
|
public void LoadPrimsFromXml(string fileName, bool newIDS, LLVector3 loadOffset)
|
||||||
{
|
{
|
||||||
XmlDocument doc = new XmlDocument();
|
XmlDocument doc = new XmlDocument();
|
||||||
XmlNode rootNode;
|
XmlNode rootNode;
|
||||||
|
@ -48,14 +48,17 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
m_innerScene.AddEntity(obj);
|
m_innerScene.AddEntity(obj);
|
||||||
|
|
||||||
SceneObjectPart rootPart = obj.GetChildPart(obj.UUID);
|
SceneObjectPart rootPart = obj.GetChildPart(obj.UUID);
|
||||||
|
// Apply loadOffsets for load/import and move combinations
|
||||||
|
rootPart.GroupPosition = rootPart.AbsolutePosition + loadOffset;
|
||||||
bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_parentScene.m_physicalPrim);
|
bool UsePhysics = (((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Physics) > 0) && m_parentScene.m_physicalPrim);
|
||||||
if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0)
|
if ((rootPart.ObjectFlags & (uint)LLObject.ObjectFlags.Phantom) == 0)
|
||||||
{
|
{
|
||||||
rootPart.PhysActor = m_innerScene.PhysicsScene.AddPrimShape(
|
rootPart.PhysActor = m_innerScene.PhysicsScene.AddPrimShape(
|
||||||
rootPart.Name,
|
rootPart.Name,
|
||||||
rootPart.Shape,
|
rootPart.Shape,
|
||||||
new PhysicsVector(rootPart.AbsolutePosition.X, rootPart.AbsolutePosition.Y,
|
new PhysicsVector(rootPart.AbsolutePosition.X + loadOffset.X,
|
||||||
rootPart.AbsolutePosition.Z),
|
rootPart.AbsolutePosition.Y + loadOffset.Y,
|
||||||
|
rootPart.AbsolutePosition.Z + loadOffset.Z),
|
||||||
new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
|
new PhysicsVector(rootPart.Scale.X, rootPart.Scale.Y, rootPart.Scale.Z),
|
||||||
new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
|
new Quaternion(rootPart.RotationOffset.W, rootPart.RotationOffset.X,
|
||||||
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
|
rootPart.RotationOffset.Y, rootPart.RotationOffset.Z), UsePhysics);
|
||||||
|
|
Loading…
Reference in New Issue