mirror of
https://github.com/opensim/opensim.git
synced 2026-08-06 01:06:30 +08:00
* Moved PrimitiveBaseShape subclasses into factory methods - the subclassing scheme won't hold for serialization
* Extracted out the 'old' AddNewPrimitive that places an object at an exact pos, without the raytracing
This commit is contained in:
@@ -1016,42 +1016,43 @@ namespace OpenSim.Region.Environment.Scenes
|
||||
// It's wrong many times though.
|
||||
|
||||
LLVector3 pos = GetNewRezLocation(RayStart, RayEnd, RayTargetID, rot, bypassRaycast, RayEndIsIntersection);
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
||||
SceneObjectGroup sceneOb =
|
||||
new SceneObjectGroup(this, m_regionHandle, ownerID, PrimIDAllocate(), pos, rot, shape);
|
||||
AddEntity(sceneOb);
|
||||
SceneObjectPart rootPart = sceneOb.GetChildPart(sceneOb.UUID);
|
||||
// if grass or tree, make phantom
|
||||
//rootPart.ApplySanePermissions();
|
||||
if ((rootPart.Shape.PCode == 95) || (rootPart.Shape.PCode == 255) || (rootPart.Shape.PCode == 111))
|
||||
{
|
||||
rootPart.AddFlag(LLObject.ObjectFlags.Phantom);
|
||||
//rootPart.ObjectFlags += (uint)LLObject.ObjectFlags.Phantom;
|
||||
}
|
||||
// if not phantom, add to physics
|
||||
bool UsePhysics = (((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim);
|
||||
if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
|
||||
{
|
||||
rootPart.PhysActor =
|
||||
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);
|
||||
}
|
||||
AddNewPrim(ownerID, pos, rot, shape);
|
||||
}
|
||||
}
|
||||
|
||||
public virtual void AddNewPrim(LLUUID ownerID, LLVector3 pos, LLQuaternion rot, PrimitiveBaseShape shape)
|
||||
{
|
||||
SceneObjectGroup sceneOb =
|
||||
new SceneObjectGroup(this, m_regionHandle, ownerID, PrimIDAllocate(), pos, rot, shape);
|
||||
|
||||
AddEntity(sceneOb);
|
||||
SceneObjectPart rootPart = sceneOb.GetChildPart(sceneOb.UUID);
|
||||
// if grass or tree, make phantom
|
||||
//rootPart.ApplySanePermissions();
|
||||
if ((rootPart.Shape.PCode == 95) || (rootPart.Shape.PCode == 255) || (rootPart.Shape.PCode == 111))
|
||||
{
|
||||
rootPart.AddFlag(LLObject.ObjectFlags.Phantom);
|
||||
//rootPart.ObjectFlags += (uint)LLObject.ObjectFlags.Phantom;
|
||||
}
|
||||
// if not phantom, add to physics
|
||||
bool UsePhysics = (((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Physics) > 0) && m_physicalPrim);
|
||||
if ((rootPart.ObjectFlags & (uint) LLObject.ObjectFlags.Phantom) == 0)
|
||||
{
|
||||
rootPart.PhysActor =
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ namespace SimpleApp
|
||||
public RotatingWheel(ulong regionHandle, SceneObjectGroup parent, LLUUID ownerID, uint localID,
|
||||
LLVector3 groupPosition, LLVector3 offsetPosition, LLQuaternion rotationDirection)
|
||||
: base(
|
||||
regionHandle, parent, ownerID, localID, new CylinderShape(0.5f, 0.2f), groupPosition, offsetPosition
|
||||
regionHandle, parent, ownerID, localID, PrimitiveBaseShape.CreateCylinder(0.5f, 0.2f), groupPosition, offsetPosition
|
||||
)
|
||||
{
|
||||
m_rotationDirection = rotationDirection;
|
||||
@@ -64,7 +64,7 @@ namespace SimpleApp
|
||||
|
||||
|
||||
public ComplexObject(Scene scene, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos)
|
||||
: base(scene, regionHandle, ownerID, localID, pos, BoxShape.Default)
|
||||
: base(scene, regionHandle, ownerID, localID, pos, PrimitiveBaseShape.Default)
|
||||
{
|
||||
m_rotationDirection = new LLQuaternion(0.05f, 0.1f, 0.15f);
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ namespace SimpleApp
|
||||
private PerformanceCounter m_counter;
|
||||
|
||||
public CpuCounterObject(Scene world, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos)
|
||||
: base(world, regionHandle, ownerID, localID, pos, BoxShape.Default)
|
||||
: base(world, regionHandle, ownerID, localID, pos, PrimitiveBaseShape.Default)
|
||||
{
|
||||
String objectName = "Processor";
|
||||
String counterName = "% Processor Time";
|
||||
|
||||
@@ -36,7 +36,7 @@ namespace SimpleApp
|
||||
public class FileSystemObject : SceneObjectGroup
|
||||
{
|
||||
public FileSystemObject(Scene world, FileInfo fileInfo, LLVector3 pos)
|
||||
: base(world, world.RegionInfo.RegionHandle, LLUUID.Zero, world.NextLocalId, pos, BoxShape.Default)
|
||||
: base(world, world.RegionInfo.RegionHandle, LLUUID.Zero, world.NextLocalId, pos, PrimitiveBaseShape.Default)
|
||||
{
|
||||
//float size = (float) Math.Pow((double) fileInfo.Length, (double) 1/3)/5;
|
||||
// rootPrimitive.ResizeGoup(new LLVector3(size, size, size));
|
||||
|
||||
@@ -199,7 +199,7 @@ namespace OpenSim.DataStore.MSSQL
|
||||
{
|
||||
MainLog.Instance.Notice(
|
||||
"No shape found for prim in storage, so setting default box shape");
|
||||
prim.Shape = BoxShape.Default;
|
||||
prim.Shape = PrimitiveBaseShape.Default;
|
||||
}
|
||||
group.AddPart(prim);
|
||||
group.RootPart = prim;
|
||||
@@ -219,7 +219,7 @@ namespace OpenSim.DataStore.MSSQL
|
||||
{
|
||||
MainLog.Instance.Notice(
|
||||
"No shape found for prim in storage, so setting default box shape");
|
||||
prim.Shape = BoxShape.Default;
|
||||
prim.Shape = PrimitiveBaseShape.Default;
|
||||
}
|
||||
createdObjects[new LLUUID(objID)].AddPart(prim);
|
||||
}
|
||||
|
||||
@@ -265,7 +265,7 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||
{
|
||||
MainLog.Instance.Notice(
|
||||
"No shape found for prim in storage, so setting default box shape");
|
||||
prim.Shape = BoxShape.Default;
|
||||
prim.Shape = PrimitiveBaseShape.Default;
|
||||
}
|
||||
group.AddPart(prim);
|
||||
group.RootPart = prim;
|
||||
@@ -285,7 +285,7 @@ namespace OpenSim.DataStore.MonoSqlite
|
||||
{
|
||||
MainLog.Instance.Notice(
|
||||
"No shape found for prim in storage, so setting default box shape");
|
||||
prim.Shape = BoxShape.Default;
|
||||
prim.Shape = PrimitiveBaseShape.Default;
|
||||
}
|
||||
createdObjects[new LLUUID(objID)].AddPart(prim);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user