* Rezzing items from Inventory on top of other prim rezzes them 0.5 meters above the 'hit' prim instead of buried in the ground somewhere.

* Various Refactorings
afrisby
Teravus Ovares 2007-12-28 14:24:14 +00:00
parent 5b720b4b39
commit f64d94f8ca
4 changed files with 50 additions and 11 deletions

View File

@ -226,7 +226,23 @@ namespace OpenSim.Framework
public delegate void ImprovedInstantMessage(
LLUUID fromAgentID, LLUUID fromAgentSession, LLUUID toAgentID, LLUUID imSessionID, uint timestamp,
string fromAgentName, string message, byte dialog); // Cut down from full list
public delegate void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos);
//rezPacket.RezData.BypassRaycast;
//rezPacket.RezData.RayEnd;
//rezPacket.RezData.RayEndIsIntersection;
//rezPacket.RezData.RayStart;
//rezPacket.RezData.RayTargetID;
//rezPacket.RezData.RemoveItem;
//rezPacket.RezData.RezSelected;
//rezPacket.RezData.FromTaskID;
//rezPacket.RezData.FromTaskID;
//rezPacket.RezData.EveryoneMask;
//rezPacket.RezData.GroupMask;
//rezPacket.RezData.NextOwnerMask;
public delegate void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart,
LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags,
bool RezSelected, bool RemoveItem, LLUUID fromTaskID );
public delegate void ModifyTerrain(
float height, float seconds, byte size, byte action, float north, float west, float south, float east,

View File

@ -2560,8 +2560,19 @@ namespace OpenSim.Region.ClientStack
//rezPacket.RezData.RemoveItem;
//rezPacket.RezData.RezSelected;
//rezPacket.RezData.FromTaskID;
//rezPacket.RezData.FromTaskID;
//rezPacket.RezData.EveryoneMask;
//rezPacket.RezData.GroupMask;
//rezPacket.RezData.NextOwnerMask;
//MainLog.Instance.Verbose("REZData", rezPacket.ToString());
OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd);
OnRezObject(this, rezPacket.InventoryData.ItemID, rezPacket.RezData.RayEnd,
rezPacket.RezData.RayStart,rezPacket.RezData.RayTargetID,
rezPacket.RezData.BypassRaycast,rezPacket.RezData.RayEndIsIntersection,
rezPacket.RezData.EveryoneMask,rezPacket.RezData.GroupMask,
rezPacket.RezData.NextOwnerMask,rezPacket.RezData.ItemFlags,
rezPacket.RezData.RezSelected,rezPacket.RezData.RemoveItem,
rezPacket.RezData.FromTaskID);
}
break;
case PacketType.DeRezObject:
@ -2740,12 +2751,6 @@ namespace OpenSim.Region.ClientStack
{
ObjectAddPacket addPacket = (ObjectAddPacket) Pack;
PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket);
MainLog.Instance.Verbose("REZData", addPacket.ToString());
//BypassRaycast: 1
//RayStart: <69.79469, 158.2652, 98.40343>
//RayEnd: <61.97724, 141.995, 92.58341>
//RayTargetID: 00000000-0000-0000-0000-000000000000
OnAddPrim(AgentId, addPacket.ObjectData.RayEnd, addPacket.ObjectData.Rotation, shape,addPacket.ObjectData.BypassRaycast,addPacket.ObjectData.RayStart,addPacket.ObjectData.RayTargetID,addPacket.ObjectData.RayEndIsIntersection);
}
break;

View File

@ -699,8 +699,23 @@ namespace OpenSim.Region.Environment.Scenes
group.DeleteParts();
}
public virtual void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 pos)
public virtual void RezObject(IClientAPI remoteClient, LLUUID itemID, LLVector3 RayEnd, LLVector3 RayStart,
LLUUID RayTargetID, byte BypassRayCast, bool RayEndIsIntersection,
uint EveryoneMask, uint GroupMask, uint NextOwnerMask, uint ItemFlags,
bool RezSelected, bool RemoveItem, LLUUID fromTaskID)
{
byte bRayEndIsIntersection = (byte)0;
if (RayEndIsIntersection)
{
bRayEndIsIntersection = (byte)1;
}
else
{
bRayEndIsIntersection = (byte)0;
}
LLVector3 pos = GetNewRezLocation(RayStart, RayEnd, RayTargetID, new LLQuaternion(0, 0, 0, 1), BypassRayCast, bRayEndIsIntersection);
CachedUserInfo userInfo = CommsManager.UserProfileCacheService.GetUserDetails(remoteClient.AgentId);
if (userInfo != null)
{

View File

@ -931,6 +931,7 @@ namespace OpenSim.Region.Environment.Scenes
if (RayEndIsIntersection == (byte)1)
{
pos = RayEnd;
pos.Z += 0.25F;
return pos;
}
if (RayTargetID != LLUUID.Zero)
@ -986,13 +987,14 @@ namespace OpenSim.Region.Environment.Scenes
pos.Z += 0.25F;
return pos;
}
else
{
// fall back to our stupid functionality
pos = RayEnd;
pos.Z += 0.25F;
return pos;
}
}
@ -1000,6 +1002,7 @@ namespace OpenSim.Region.Environment.Scenes
{
// fall back to our stupid functionality
pos = RayEnd;
pos.Z += 0.25F;
return pos;
}
@ -1018,7 +1021,7 @@ namespace OpenSim.Region.Environment.Scenes
if (PermissionsMngr.CanRezObject(ownerID, pos))
{
// rez ON the ground, not IN the ground
pos.Z += 0.25F;
AddNewPrim(ownerID, pos, rot, shape);