* re-applied AddNewPrim refactoring... third time now...
parent
2ff760457e
commit
14a191b285
|
@ -1008,13 +1008,7 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
public virtual void AddNewPrim(LLUUID ownerID, LLVector3 RayEnd, LLQuaternion rot, PrimitiveBaseShape shape,
|
public virtual void AddNewPrim(LLUUID ownerID, LLVector3 RayEnd, LLQuaternion rot, PrimitiveBaseShape shape,
|
||||||
byte bypassRaycast, LLVector3 RayStart, LLUUID RayTargetID,
|
byte bypassRaycast, LLVector3 RayStart, LLUUID RayTargetID,
|
||||||
byte RayEndIsIntersection)
|
byte RayEndIsIntersection)
|
||||||
{
|
{
|
||||||
// What we're *supposed* to do is raytrace from the camera position given by the client to the nearest collision
|
|
||||||
// in the direction the client supplies (the ground level that we clicked)
|
|
||||||
// This function is pretty crappy right now.. so we're not affecting where the newly rezzed objects go
|
|
||||||
// Test it if you like. The console will write where it guesses a collision took place. if it thinks one did.
|
|
||||||
// It's wrong many times though.
|
|
||||||
|
|
||||||
LLVector3 pos = GetNewRezLocation(RayStart, RayEnd, RayTargetID, rot, bypassRaycast, RayEndIsIntersection);
|
LLVector3 pos = GetNewRezLocation(RayStart, RayEnd, RayTargetID, rot, bypassRaycast, RayEndIsIntersection);
|
||||||
|
|
||||||
|
|
||||||
|
@ -1022,36 +1016,40 @@ namespace OpenSim.Region.Environment.Scenes
|
||||||
|
|
||||||
if (PermissionsMngr.CanRezObject(ownerID, pos))
|
if (PermissionsMngr.CanRezObject(ownerID, pos))
|
||||||
{
|
{
|
||||||
|
// rez ON the ground, not IN the ground
|
||||||
// rez ON the ground, not IN the ground
|
|
||||||
pos.Z += 0.25F;
|
pos.Z += 0.25F;
|
||||||
|
|
||||||
|
|
||||||
SceneObjectGroup sceneOb =
|
|
||||||
new SceneObjectGroup(this, m_regionHandle, ownerID, PrimIDAllocate(), pos, rot, shape);
|
AddNewPrim(ownerID, pos, rot, shape);
|
||||||
AddEntity(sceneOb);
|
}
|
||||||
SceneObjectPart rootPart = sceneOb.GetChildPart(sceneOb.UUID);
|
}
|
||||||
// if grass or tree, make phantom
|
|
||||||
//rootPart.ApplySanePermissions();
|
public virtual void AddNewPrim(LLUUID ownerID, LLVector3 pos, LLQuaternion rot, PrimitiveBaseShape shape)
|
||||||
if ((rootPart.Shape.PCode == 95) || (rootPart.Shape.PCode == 255) || (rootPart.Shape.PCode == 111))
|
{
|
||||||
{
|
SceneObjectGroup sceneOb =
|
||||||
rootPart.AddFlag(LLObject.ObjectFlags.Phantom);
|
new SceneObjectGroup(this, m_regionHandle, ownerID, PrimIDAllocate(), pos, rot, shape);
|
||||||
//rootPart.ObjectFlags += (uint)LLObject.ObjectFlags.Phantom;
|
AddEntity(sceneOb);
|
||||||
}
|
SceneObjectPart rootPart = sceneOb.GetChildPart(sceneOb.UUID);
|
||||||
// if not phantom, add to physics
|
// if grass or tree, make phantom
|
||||||
bool UsePhysics = (((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim);
|
//rootPart.ApplySanePermissions();
|
||||||
if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
|
if ((rootPart.Shape.PCode == 95) || (rootPart.Shape.PCode == 255) || (rootPart.Shape.PCode == 111))
|
||||||
{
|
{
|
||||||
rootPart.PhysActor =
|
rootPart.AddFlag(LLObject.ObjectFlags.Phantom);
|
||||||
PhysicsScene.AddPrimShape(
|
//rootPart.ObjectFlags += (uint)LLObject.ObjectFlags.Phantom;
|
||||||
rootPart.Name,
|
}
|
||||||
rootPart.Shape,
|
// if not phantom, add to physics
|
||||||
new PhysicsVector(pos.X, pos.Y, pos.Z),
|
bool UsePhysics = (((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim);
|
||||||
new PhysicsVector(shape.Scale.X, shape.Scale.Y, shape.Scale.Z),
|
if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
|
||||||
new Quaternion(), UsePhysics);
|
{
|
||||||
// subscribe to physics events.
|
rootPart.PhysActor =
|
||||||
rootPart.DoPhysicsPropertyUpdate(UsePhysics, true);
|
PhysicsScene.AddPrimShape(
|
||||||
}
|
rootPart.Name,
|
||||||
|
rootPart.Shape,
|
||||||
|
new PhysicsVector(pos.X, pos.Y, pos.Z),
|
||||||
|
new PhysicsVector(shape.Scale.X, shape.Scale.Y, shape.Scale.Z),
|
||||||
|
new Quaternion(), UsePhysics);
|
||||||
|
// subscribe to physics events.
|
||||||
|
rootPart.DoPhysicsPropertyUpdate(UsePhysics, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue