Merge branch 'ubitworkmaster'
commit
3a94e20d70
|
@ -246,7 +246,7 @@ namespace OpenSim.Region.Framework.Interfaces
|
||||||
/// <param name="objlist">The scene objects</param>
|
/// <param name="objlist">The scene objects</param>
|
||||||
/// <param name="veclist">Relative offsets for each object</param>
|
/// <param name="veclist">Relative offsets for each object</param>
|
||||||
/// <returns>true = success, false = the scene object asset couldn't be found</returns>
|
/// <returns>true = success, false = the scene object asset couldn't be found</returns>
|
||||||
bool GetRezReadySceneObjects(TaskInventoryItem item, out List<SceneObjectGroup> objlist, out List<Vector3> veclist);
|
bool GetRezReadySceneObjects(TaskInventoryItem item, out List<SceneObjectGroup> objlist, out List<Vector3> veclist, out Vector3 bbox, out float offsetHeight);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Update an existing inventory item.
|
/// Update an existing inventory item.
|
||||||
|
|
|
@ -2447,7 +2447,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
RayStart, RayEnd, RayTargetID, Quaternion.Identity,
|
RayStart, RayEnd, RayTargetID, Quaternion.Identity,
|
||||||
BypassRayCast, bRayEndIsIntersection, true, scale, false);
|
BypassRayCast, bRayEndIsIntersection, true, scale, false);
|
||||||
|
|
||||||
RezObject(part, item, pos, null, Vector3.Zero, 0);
|
RezObject(part, item, pos, null, Vector3.Zero, 0, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2463,15 +2463,18 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
/// <param name="param"></param>
|
/// <param name="param"></param>
|
||||||
/// <returns>The SceneObjectGroup(s) rezzed, or null if rez was unsuccessful</returns>
|
/// <returns>The SceneObjectGroup(s) rezzed, or null if rez was unsuccessful</returns>
|
||||||
public virtual List<SceneObjectGroup> RezObject(
|
public virtual List<SceneObjectGroup> RezObject(
|
||||||
SceneObjectPart sourcePart, TaskInventoryItem item, Vector3 pos, Quaternion? rot, Vector3 vel, int param)
|
SceneObjectPart sourcePart, TaskInventoryItem item, Vector3 pos, Quaternion? rot, Vector3 vel, int param, bool atRoot)
|
||||||
{
|
{
|
||||||
if (null == item)
|
if (null == item)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
List<SceneObjectGroup> objlist;
|
List<SceneObjectGroup> objlist;
|
||||||
List<Vector3> veclist;
|
List<Vector3> veclist;
|
||||||
|
Vector3 bbox;
|
||||||
bool success = sourcePart.Inventory.GetRezReadySceneObjects(item, out objlist, out veclist);
|
float offsetHeight;
|
||||||
|
|
||||||
|
bool success = sourcePart.Inventory.GetRezReadySceneObjects(item, out objlist, out veclist,out bbox, out offsetHeight);
|
||||||
|
|
||||||
if (!success)
|
if (!success)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
|
@ -2488,6 +2491,28 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
sourcePart.Inventory.RemoveInventoryItem(item.ItemID);
|
sourcePart.Inventory.RemoveInventoryItem(item.ItemID);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SceneObjectGroup sog;
|
||||||
|
// position adjust
|
||||||
|
if (totalPrims > 1) // nothing to do on a single prim
|
||||||
|
{
|
||||||
|
if (objlist.Count == 1)
|
||||||
|
{
|
||||||
|
// current object position is root position
|
||||||
|
if(!atRoot)
|
||||||
|
{
|
||||||
|
sog = objlist[0];
|
||||||
|
Quaternion orot;
|
||||||
|
if (rot == null)
|
||||||
|
orot = sog.RootPart.GetWorldRotation();
|
||||||
|
else
|
||||||
|
orot = rot.Value;
|
||||||
|
Vector3 off = sog.GetGeometricCenter();
|
||||||
|
off *= orot;
|
||||||
|
pos -= off;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
for (int i = 0; i < objlist.Count; i++)
|
for (int i = 0; i < objlist.Count; i++)
|
||||||
{
|
{
|
||||||
SceneObjectGroup group = objlist[i];
|
SceneObjectGroup group = objlist[i];
|
||||||
|
|
|
@ -2468,12 +2468,23 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
public void stopMoveToTarget()
|
public void stopMoveToTarget()
|
||||||
{
|
{
|
||||||
PhysicsActor pa = RootPart.PhysActor;
|
if (IsAttachment)
|
||||||
|
{
|
||||||
|
ScenePresence avatar = m_scene.GetScenePresence(AttachedAvatar);
|
||||||
|
if (avatar != null)
|
||||||
|
{
|
||||||
|
avatar.ResetMoveToTarget();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
PhysicsActor pa = RootPart.PhysActor;
|
||||||
|
|
||||||
if (pa != null)
|
if (pa != null)
|
||||||
pa.PIDActive = false;
|
pa.PIDActive = false;
|
||||||
|
|
||||||
RootPart.ScheduleTerseUpdate(); // send a stop information
|
RootPart.ScheduleTerseUpdate(); // send a stop information
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void rotLookAt(Quaternion target, float strength, float damping)
|
public void rotLookAt(Quaternion target, float strength, float damping)
|
||||||
|
|
|
@ -871,7 +871,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return items;
|
return items;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool GetRezReadySceneObjects(TaskInventoryItem item, out List<SceneObjectGroup> objlist, out List<Vector3> veclist)
|
public bool GetRezReadySceneObjects(TaskInventoryItem item, out List<SceneObjectGroup> objlist, out List<Vector3> veclist, out Vector3 bbox, out float offsetHeight)
|
||||||
{
|
{
|
||||||
AssetBase rezAsset = m_part.ParentGroup.Scene.AssetService.Get(item.AssetID.ToString());
|
AssetBase rezAsset = m_part.ParentGroup.Scene.AssetService.Get(item.AssetID.ToString());
|
||||||
|
|
||||||
|
@ -882,12 +882,11 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
item.AssetID, item.Name, m_part.Name);
|
item.AssetID, item.Name, m_part.Name);
|
||||||
objlist = null;
|
objlist = null;
|
||||||
veclist = null;
|
veclist = null;
|
||||||
|
bbox = Vector3.Zero;
|
||||||
|
offsetHeight = 0;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector3 bbox;
|
|
||||||
float offsetHeight;
|
|
||||||
|
|
||||||
bool single = m_part.ParentGroup.Scene.GetObjectsToRez(rezAsset.Data, false, out objlist, out veclist, out bbox, out offsetHeight);
|
bool single = m_part.ParentGroup.Scene.GetObjectsToRez(rezAsset.Data, false, out objlist, out veclist, out bbox, out offsetHeight);
|
||||||
|
|
||||||
for (int i = 0; i < objlist.Count; i++)
|
for (int i = 0; i < objlist.Count; i++)
|
||||||
|
|
|
@ -97,7 +97,7 @@ namespace OpenSim.Region.Framework.Tests
|
||||||
Quaternion rezRot = new Quaternion(0.5f, 0.5f, 0.5f, 0.5f);
|
Quaternion rezRot = new Quaternion(0.5f, 0.5f, 0.5f, 0.5f);
|
||||||
Vector3 rezVel = new Vector3(2, 2, 2);
|
Vector3 rezVel = new Vector3(2, 2, 2);
|
||||||
|
|
||||||
scene.RezObject(sop1, taskSceneObjectItem, rezPos, rezRot, rezVel, 0);
|
scene.RezObject(sop1, taskSceneObjectItem, rezPos, rezRot, rezVel, 0,false);
|
||||||
|
|
||||||
SceneObjectGroup rezzedObject = scene.GetSceneObjectGroup("tso");
|
SceneObjectGroup rezzedObject = scene.GetSceneObjectGroup("tso");
|
||||||
|
|
||||||
|
|
|
@ -3233,6 +3233,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llRezAtRoot(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param)
|
public void llRezAtRoot(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param)
|
||||||
|
{
|
||||||
|
doObjectRez(inventory, pos, vel, rot, param, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void doObjectRez(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param, bool atRoot)
|
||||||
{
|
{
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
|
@ -3260,10 +3265,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// need the magnitude later
|
List<SceneObjectGroup> new_groups = World.RezObject(m_host, item, pos, rot, vel, param, atRoot);
|
||||||
// float velmag = (float)Util.GetMagnitude(llvel);
|
|
||||||
|
|
||||||
List<SceneObjectGroup> new_groups = World.RezObject(m_host, item, pos, rot, vel, param);
|
|
||||||
|
|
||||||
// If either of these are null, then there was an unknown error.
|
// If either of these are null, then there was an unknown error.
|
||||||
if (new_groups == null)
|
if (new_groups == null)
|
||||||
|
@ -3311,7 +3313,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
public void llRezObject(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param)
|
public void llRezObject(string inventory, LSL_Vector pos, LSL_Vector vel, LSL_Rotation rot, int param)
|
||||||
{
|
{
|
||||||
llRezAtRoot(inventory, pos, vel, rot, param);
|
doObjectRez(inventory, pos, vel, rot, param, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void llLookAt(LSL_Vector target, double strength, double damping)
|
public void llLookAt(LSL_Vector target, double strength, double damping)
|
||||||
|
|
Loading…
Reference in New Issue