From 85fc2dfe3c9c8fc1881833385d13e1c6aae13fe9 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 10 Aug 2010 16:16:57 +0100
Subject: extend TestDuplicateObject() to a two prim object
---
.../Framework/Scenes/Tests/SceneGraphTests.cs | 29 ++++++++++++++--------
1 file changed, 19 insertions(+), 10 deletions(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
index 8a103d7..bb6e540 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
@@ -48,22 +48,31 @@ namespace OpenSim.Region.Framework.Scenes.Tests
TestHelper.InMethod();
Scene scene = SceneSetupHelpers.SetupScene();
- UUID ownerUuid = new UUID("00000000-0000-0000-0000-000000000010");
- string objName = "obj1";
- UUID objUuid = new UUID("00000000-0000-0000-0000-000000000001");
+ UUID ownerId = new UUID("00000000-0000-0000-0000-000000000010");
+ string part1Name = "part1";
+ UUID part1Id = new UUID("00000000-0000-0000-0000-000000000001");
+ string part2Name = "part2";
+ UUID part2Id = new UUID("00000000-0000-0000-0000-000000000002");
- SceneObjectPart part
- = new SceneObjectPart(ownerUuid, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero)
- { Name = objName, UUID = objUuid };
+ SceneObjectPart part1
+ = new SceneObjectPart(ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero)
+ { Name = part1Name, UUID = part1Id };
+ SceneObjectGroup so = new SceneObjectGroup(part1);
+ SceneObjectPart part2
+ = new SceneObjectPart(ownerId, PrimitiveBaseShape.Default, Vector3.Zero, Quaternion.Identity, Vector3.Zero)
+ { Name = part2Name, UUID = part2Id };
+ so.AddPart(part2);
- scene.AddNewSceneObject(new SceneObjectGroup(part), false);
+ scene.AddNewSceneObject(so, false);
+
+ uint part1LocalId = part1.LocalId;
SceneObjectGroup duplicatedSo
= scene.SceneGraph.DuplicateObject(
- part.LocalId, new Vector3(10, 0, 0), 0, ownerUuid, UUID.Zero, Quaternion.Identity);
+ part1LocalId, new Vector3(10, 0, 0), 0, ownerId, UUID.Zero, Quaternion.Identity);
- Assert.That(duplicatedSo.Children.Count, Is.EqualTo(1));
- Assert.That(duplicatedSo.RootPart.LocalId, Is.Not.EqualTo(part.LocalId));
+ Assert.That(duplicatedSo.Children.Count, Is.EqualTo(2));
+ Assert.That(duplicatedSo.RootPart.LocalId, Is.Not.EqualTo(part1.LocalId));
//SceneObjectPart retrievedPart = scene.GetSceneObjectPart(objUuid);
}
--
cgit v1.1
From 7203feb83c3fd4ca7af7ec717ca919fc419bcffd Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 10 Aug 2010 16:50:36 +0100
Subject: Extend DuplicateObject() test to check flags on the duplicated object
---
OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs | 16 +++++++++-------
1 file changed, 9 insertions(+), 7 deletions(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
index bb6e540..d7da9cb 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
@@ -65,16 +65,18 @@ namespace OpenSim.Region.Framework.Scenes.Tests
scene.AddNewSceneObject(so, false);
- uint part1LocalId = part1.LocalId;
-
- SceneObjectGroup duplicatedSo
+ SceneObjectGroup dupeSo
= scene.SceneGraph.DuplicateObject(
- part1LocalId, new Vector3(10, 0, 0), 0, ownerId, UUID.Zero, Quaternion.Identity);
+ part1.LocalId, new Vector3(10, 0, 0), 0, ownerId, UUID.Zero, Quaternion.Identity);
+ Assert.That(dupeSo.Children.Count, Is.EqualTo(2));
- Assert.That(duplicatedSo.Children.Count, Is.EqualTo(2));
- Assert.That(duplicatedSo.RootPart.LocalId, Is.Not.EqualTo(part1.LocalId));
+ SceneObjectPart dupePart1 = dupeSo.GetLinkNumPart(1);
+ SceneObjectPart dupePart2 = dupeSo.GetLinkNumPart(2);
+ Assert.That(dupePart1.LocalId, Is.Not.EqualTo(part1.LocalId));
+ Assert.That(dupePart2.LocalId, Is.Not.EqualTo(part2.LocalId));
- //SceneObjectPart retrievedPart = scene.GetSceneObjectPart(objUuid);
+ Assert.That(dupePart1.Flags, Is.EqualTo(part1.Flags));
+ Assert.That(dupePart2.Flags, Is.EqualTo(part2.Flags));
}
}
}
\ No newline at end of file
--
cgit v1.1
From 0a81038dd5be361dba0a95546f3ef695ae720fc6 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 10 Aug 2010 17:26:31 +0100
Subject: Reduce number of paths in SOP code by setting flags via Flags
property rather than _flags
Both ObjectFlags and Flags are effectively exactly the same property, except that ObjectFlags is uint and Flags is PrimFlags
Both reference the PrimFlags _flags underneath, so you couldn't set a non PrimFlags uint anyway.
Deprecated ObjectFlags in favour of Flags.
---
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 40 ++++++++++++++--------
1 file changed, 25 insertions(+), 15 deletions(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 0c35eec..0d3f64c 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -396,7 +396,7 @@ namespace OpenSim.Region.Framework.Scenes
// this appears to have the same UUID (!) as the prim. If this isn't the case, one can't drag items from
// the prim into an agent inventory (Linden client reports that the "Object not found for drop" in its log
- _flags = 0;
+ Flags = 0;
CreateSelected = true;
TrimPermissions();
@@ -424,7 +424,7 @@ namespace OpenSim.Region.Framework.Scenes
private uint _groupMask = (uint)PermissionMask.None;
private uint _everyoneMask = (uint)PermissionMask.None;
private uint _nextOwnerMask = (uint)PermissionMask.All;
- private PrimFlags _flags = 0;
+ private PrimFlags _flags = PrimFlags.None;
private DateTime m_expires;
private DateTime m_rezzed;
private bool m_createSelected = false;
@@ -471,10 +471,14 @@ namespace OpenSim.Region.Framework.Scenes
set { m_inventory.Items = value; }
}
+ ///
+ /// This is idential to the Flags property, except that the returned value is uint rather than PrimFlags
+ ///
+ [Obsolete("Use Flags property instead")]
public uint ObjectFlags
{
- get { return (uint)_flags; }
- set { _flags = (PrimFlags)value; }
+ get { return (uint)Flags; }
+ set { Flags = (PrimFlags)value; }
}
public UUID UUID
@@ -1169,7 +1173,11 @@ namespace OpenSim.Region.Framework.Scenes
public PrimFlags Flags
{
get { return _flags; }
- set { _flags = value; }
+ set
+ {
+// m_log.DebugFormat("[SOP]: Setting flags for {0} {1} to {2}", UUID, Name, value);
+ _flags = value;
+ }
}
[XmlIgnore]
@@ -1305,7 +1313,7 @@ namespace OpenSim.Region.Framework.Scenes
if ((ObjectFlags & (uint) flag) == 0)
{
//m_log.Debug("Adding flag: " + ((PrimFlags) flag).ToString());
- _flags |= flag;
+ Flags |= flag;
if (flag == PrimFlags.TemporaryOnRez)
ResetExpire();
@@ -1940,12 +1948,14 @@ namespace OpenSim.Region.Framework.Scenes
}
public uint GetEffectiveObjectFlags()
- {
- PrimFlags f = _flags;
- if (m_parentGroup == null || m_parentGroup.RootPart == this)
- f &= ~(PrimFlags.Touch | PrimFlags.Money);
+ {
+ // Commenting this section of code out since it doesn't actually do anything, as enums are handled by
+ // value rather than reference
+// PrimFlags f = _flags;
+// if (m_parentGroup == null || m_parentGroup.RootPart == this)
+// f &= ~(PrimFlags.Touch | PrimFlags.Money);
- return (uint)_flags | (uint)LocalFlags;
+ return (uint)Flags | (uint)LocalFlags;
}
public Vector3 GetGeometricCenter()
@@ -2696,10 +2706,10 @@ namespace OpenSim.Region.Framework.Scenes
public void RemFlag(PrimFlags flag)
{
// PrimFlags prevflag = Flags;
- if ((ObjectFlags & (uint) flag) != 0)
+ if ((Flags & flag) != 0)
{
//m_log.Debug("Removing flag: " + ((PrimFlags)flag).ToString());
- _flags &= ~flag;
+ Flags &= ~flag;
}
//m_log.Debug("prev: " + prevflag.ToString() + " curr: " + Flags.ToString());
//ScheduleFullUpdate();
@@ -2990,10 +3000,10 @@ namespace OpenSim.Region.Framework.Scenes
if (remoteClient.AgentId == _ownerID)
{
- if ((uint) (_flags & PrimFlags.CreateSelected) != 0)
+ if ((Flags & PrimFlags.CreateSelected) != 0)
{
clientFlags |= (uint) PrimFlags.CreateSelected;
- _flags &= ~PrimFlags.CreateSelected;
+ Flags &= ~PrimFlags.CreateSelected;
}
}
//bool isattachment = IsAttachment;
--
cgit v1.1
From 6147efdad98a70f6a7abc220cbdcc751d0838507 Mon Sep 17 00:00:00 2001
From: Marck
Date: Tue, 10 Aug 2010 19:42:29 +0200
Subject: Avoid truncation of error message during region creation.
Signed-off-by: Melanie
---
OpenSim/Region/Framework/Scenes/Scene.cs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs
index dcd7f3d..0eb28f4 100644
--- a/OpenSim/Region/Framework/Scenes/Scene.cs
+++ b/OpenSim/Region/Framework/Scenes/Scene.cs
@@ -1334,7 +1334,7 @@ namespace OpenSim.Region.Framework.Scenes
m_regInfo.EstateSettings.Save();
}
else
- m_log.ErrorFormat("[SCENE]: Unable to store account. If this simulator is connected to a grid,\n you must create the estate owner account first.");
+ m_log.ErrorFormat("[SCENE]: Unable to store account. If this simulator is connected to a grid, you must create the estate owner account first.");
}
else
{
--
cgit v1.1
From 2a1c11fda9b4ab948b7821ef2423270793a5e577 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Tue, 10 Aug 2010 20:15:44 +0100
Subject: On shift-copy of an object, set up a new physics actor (as
appropriate) for every copied prim, not just the root
This addresses http://opensimulator.org/mantis/view.php?id=4295
---
.../Region/Framework/Scenes/SceneObjectGroup.cs | 38 +++++++++++-----------
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 22 ++++++++++---
.../Framework/Scenes/Tests/SceneGraphTests.cs | 7 ++++
3 files changed, 44 insertions(+), 23 deletions(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index a2c3c07..6c1f3c2 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1563,23 +1563,6 @@ namespace OpenSim.Region.Framework.Scenes
if (userExposed)
dupe.m_rootPart.TrimPermissions();
- /// may need to create a new Physics actor.
- if (dupe.RootPart.PhysActor != null && userExposed)
- {
- PrimitiveBaseShape pbs = dupe.RootPart.Shape;
-
- dupe.RootPart.PhysActor = m_scene.PhysicsScene.AddPrimShape(
- dupe.RootPart.Name,
- pbs,
- dupe.RootPart.AbsolutePosition,
- dupe.RootPart.Scale,
- dupe.RootPart.RotationOffset,
- dupe.RootPart.PhysActor.IsPhysical);
-
- dupe.RootPart.PhysActor.LocalID = dupe.RootPart.LocalId;
- dupe.RootPart.DoPhysicsPropertyUpdate(dupe.RootPart.PhysActor.IsPhysical, true);
- }
-
List partList;
lock (m_parts)
@@ -1598,11 +1581,28 @@ namespace OpenSim.Region.Framework.Scenes
if (part.UUID != m_rootPart.UUID)
{
SceneObjectPart newPart = dupe.CopyPart(part, OwnerID, GroupID, userExposed);
-
newPart.LinkNum = part.LinkNum;
}
- }
+ // Need to duplicate the physics actor as well
+ if (part.PhysActor != null && userExposed)
+ {
+ PrimitiveBaseShape pbs = part.Shape;
+
+ part.PhysActor
+ = m_scene.PhysicsScene.AddPrimShape(
+ part.Name,
+ pbs,
+ part.AbsolutePosition,
+ part.Scale,
+ part.RotationOffset,
+ part.PhysActor.IsPhysical);
+
+ part.PhysActor.LocalID = part.LocalId;
+ part.DoPhysicsPropertyUpdate(part.PhysActor.IsPhysical, true);
+ }
+ }
+
if (userExposed)
{
dupe.UpdateParentIDs();
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 0d3f64c..cf718cb 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -150,8 +150,17 @@ namespace OpenSim.Region.Framework.Scenes
// TODO: This needs to be persisted in next XML version update!
[XmlIgnore]
public readonly int[] PayPrice = {-2,-2,-2,-2,-2};
+
[XmlIgnore]
- public PhysicsActor PhysActor;
+ public PhysicsActor PhysActor
+ {
+ get { return m_physActor; }
+ set
+ {
+// m_log.DebugFormat("[SOP]: PhysActor set to {0} for {1} {2}", value, Name, UUID);
+ m_physActor = value;
+ }
+ }
//Xantor 20080528 Sound stuff:
// Note: This isn't persisted in the database right now, as the fields for that aren't just there yet.
@@ -297,6 +306,7 @@ namespace OpenSim.Region.Framework.Scenes
///
private byte m_updateFlag;
+ private PhysicsActor m_physActor;
protected Vector3 m_acceleration;
protected Vector3 m_angularVelocity;
@@ -1006,7 +1016,11 @@ namespace OpenSim.Region.Framework.Scenes
public bool CreateSelected
{
get { return m_createSelected; }
- set { m_createSelected = value; }
+ set
+ {
+// m_log.DebugFormat("[SOP]: Setting CreateSelected to {0} for {1} {2}", value, Name, UUID);
+ m_createSelected = value;
+ }
}
#endregion
@@ -1531,7 +1545,7 @@ namespace OpenSim.Region.Framework.Scenes
}
else
{
- m_log.DebugFormat("[SPEW]: physics actor is null for {0} with parent {1}", UUID, this.ParentGroup.UUID);
+ m_log.DebugFormat("[SOP]: physics actor is null for {0} with parent {1}", UUID, this.ParentGroup.UUID);
}
}
}
@@ -1801,7 +1815,7 @@ namespace OpenSim.Region.Framework.Scenes
/// that's not wholesome. Had to make Scene public
//PhysActor = null;
- if ((ObjectFlags & (uint)PrimFlags.Phantom) == 0)
+ if ((Flags & PrimFlags.Phantom) == 0)
{
if (UsePhysics)
{
diff --git a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
index d7da9cb..c9662ef 100644
--- a/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
+++ b/OpenSim/Region/Framework/Scenes/Tests/SceneGraphTests.cs
@@ -77,6 +77,13 @@ namespace OpenSim.Region.Framework.Scenes.Tests
Assert.That(dupePart1.Flags, Is.EqualTo(part1.Flags));
Assert.That(dupePart2.Flags, Is.EqualTo(part2.Flags));
+
+ /*
+ Assert.That(part1.PhysActor, Is.Not.Null);
+ Assert.That(part2.PhysActor, Is.Not.Null);
+ Assert.That(dupePart1.PhysActor, Is.Not.Null);
+ Assert.That(dupePart2.PhysActor, Is.Not.Null);
+ */
}
}
}
\ No newline at end of file
--
cgit v1.1
From 3f942a4f74057cb8280bbdd74f2c148b32792416 Mon Sep 17 00:00:00 2001
From: Mikko Pallari
Date: Tue, 10 Aug 2010 14:57:22 +0300
Subject: Removed abstract SetText method from EntityBase to make cleaner API.
Signed-off-by: Melanie
---
OpenSim/Region/Framework/Scenes/EntityBase.cs | 2 --
OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | 2 +-
OpenSim/Region/Framework/Scenes/ScenePresence.cs | 5 -----
3 files changed, 1 insertion(+), 8 deletions(-)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/EntityBase.cs b/OpenSim/Region/Framework/Scenes/EntityBase.cs
index 4e25c46..e183f9d 100644
--- a/OpenSim/Region/Framework/Scenes/EntityBase.cs
+++ b/OpenSim/Region/Framework/Scenes/EntityBase.cs
@@ -130,8 +130,6 @@ namespace OpenSim.Region.Framework.Scenes
{
return (EntityBase) MemberwiseClone();
}
-
- public abstract void SetText(string text, Vector3 color, double alpha);
}
//Nested Classes
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
index 6c1f3c2..3670080 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs
@@ -1360,7 +1360,7 @@ namespace OpenSim.Region.Framework.Scenes
ScheduleGroupForFullUpdate();
}
- public override void SetText(string text, Vector3 color, double alpha)
+ public void SetText(string text, Vector3 color, double alpha)
{
Color = Color.FromArgb(0xff - (int) (alpha * 0xff),
(int) (color.X * 0xff),
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index 4c17615..14d7d6a 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -3212,11 +3212,6 @@ namespace OpenSim.Region.Framework.Scenes
}
}
- public override void SetText(string text, Vector3 color, double alpha)
- {
- throw new Exception("Can't set Text on avatar.");
- }
-
///
/// Adds a physical representation of the avatar to the Physics plugin
///
--
cgit v1.1
From 4f62f00ca01045ec55987cd7c98410c77db03dfd Mon Sep 17 00:00:00 2001
From: Marck
Date: Mon, 9 Aug 2010 23:46:30 +0200
Subject: Changing prim color generates event CHANGED_COLOR.
Signed-off-by: Melanie
---
OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 2 ++
1 file changed, 2 insertions(+)
(limited to 'OpenSim/Region/Framework')
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index cf718cb..74b10c3 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -3313,6 +3313,7 @@ namespace OpenSim.Region.Framework.Scenes
texcolor.B = Util.Clip((float)color.Z, 0.0f, 1.0f);
tex.FaceTextures[face].RGBA = texcolor;
UpdateTexture(tex);
+ TriggerScriptChangedEvent(Changed.COLOR);
return;
}
else if (face == ALL_SIDES)
@@ -3334,6 +3335,7 @@ namespace OpenSim.Region.Framework.Scenes
tex.DefaultTexture.RGBA = texcolor;
}
UpdateTexture(tex);
+ TriggerScriptChangedEvent(Changed.COLOR);
return;
}
}
--
cgit v1.1