From ec5ae36fda58817b369dd49ccc3bba4355d072c3 Mon Sep 17 00:00:00 2001 From: MW Date: Fri, 3 Aug 2007 14:47:38 +0000 Subject: [PATCH] and more work on those classes. Think they are just about ready to begin hooking them up. --- .../Scenes/AllNewSceneObjectGroup2.cs | 76 ++++++++++++++++++- .../Scenes/AllNewSceneObjectPart2.cs | 35 ++++++++- OpenSim/Region/Environment/Scenes/Scene.cs | 1 - 3 files changed, 107 insertions(+), 5 deletions(-) diff --git a/OpenSim/Region/Environment/Scenes/AllNewSceneObjectGroup2.cs b/OpenSim/Region/Environment/Scenes/AllNewSceneObjectGroup2.cs index b0fe12a85a..9d9c97bd87 100644 --- a/OpenSim/Region/Environment/Scenes/AllNewSceneObjectGroup2.cs +++ b/OpenSim/Region/Environment/Scenes/AllNewSceneObjectGroup2.cs @@ -44,6 +44,14 @@ namespace OpenSim.Region.Environment.Scenes } } + /// + /// + /// + public AllNewSceneObjectGroup2() + { + + } + /// /// /// @@ -62,7 +70,70 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - public void FlagGroupForFullUpdate() + /// + public new AllNewSceneObjectGroup2 Copy() + { + AllNewSceneObjectGroup2 dupe = (AllNewSceneObjectGroup2) this.MemberwiseClone(); + dupe.Pos = new LLVector3(Pos.X, Pos.Y, Pos.Z); + dupe.CopyRootPart(this.m_rootPart); + + foreach (AllNewSceneObjectPart2 part in this.m_parts.Values) + { + if (part.UUID != this.m_rootPart.UUID) + { + dupe.CopyPart(part); + } + } + return dupe; + } + + public void CopyRootPart(AllNewSceneObjectPart2 part) + { + + } + + public void CopyPart(AllNewSceneObjectPart2 part) + { + + } + + /// + /// + /// + public override void Update() + { + foreach (AllNewSceneObjectPart2 part in this.m_parts.Values) + { + part.SendScheduledUpdates(); + } + } + + /// + /// + /// + public void ScheduleGroupForFullUpdate() + { + foreach (AllNewSceneObjectPart2 part in this.m_parts.Values) + { + part.ScheduleFullUpdate(); + } + } + + /// + /// + /// + public void ScheduleGroupForTerseUpdate() + { + foreach (AllNewSceneObjectPart2 part in this.m_parts.Values) + { + part.ScheduleTerseUpdate(); + } + } + + /// + /// + /// + public void ScheduleGroupFullUpdate() { foreach (AllNewSceneObjectPart2 part in this.m_parts.Values) { @@ -73,7 +144,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - public void FlagGroupForTerseUpdate() + public void SendGroupTerseUpdate() { foreach (AllNewSceneObjectPart2 part in this.m_parts.Values) { @@ -177,6 +248,7 @@ namespace OpenSim.Region.Environment.Scenes public void GrapMovement(LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) { this.Pos = pos; + this.m_rootPart.SendTerseUpdateToALLClients(); } /// diff --git a/OpenSim/Region/Environment/Scenes/AllNewSceneObjectPart2.cs b/OpenSim/Region/Environment/Scenes/AllNewSceneObjectPart2.cs index b0303a34f6..813f2e1332 100644 --- a/OpenSim/Region/Environment/Scenes/AllNewSceneObjectPart2.cs +++ b/OpenSim/Region/Environment/Scenes/AllNewSceneObjectPart2.cs @@ -252,6 +252,14 @@ namespace OpenSim.Region.Environment.Scenes #endregion #region Constructors + /// + /// + /// + public AllNewSceneObjectPart2() + { + + } + /// /// Create a completely new SceneObjectPart (prim) /// @@ -315,6 +323,29 @@ namespace OpenSim.Region.Environment.Scenes } #endregion + #region Copying + /// + /// + /// + /// + public AllNewSceneObjectPart2 Copy(Scene scene) + { + AllNewSceneObjectPart2 dupe =(AllNewSceneObjectPart2) this.MemberwiseClone(); + dupe.m_Shape = m_Shape.Copy(); + dupe.m_regionHandle = m_regionHandle; + uint newLocalID = scene.PrimIDAllocate(); + dupe.UUID = LLUUID.Random(); + dupe.LocalID = newLocalID; + dupe.OffsetPosition = new LLVector3(OffsetPosition.X, OffsetPosition.Y, OffsetPosition.Z); + dupe.RotationOffset = new LLQuaternion(RotationOffset.X, RotationOffset.Y, RotationOffset.Z, RotationOffset.W); + dupe.Velocity = new LLVector3(0, 0, 0); + dupe.Acceleration = new LLVector3(0, 0, 0); + dupe.AngularVelocity = new LLVector3(0, 0, 0); + dupe.ObjectFlags = this.ObjectFlags; + return dupe; + } + #endregion + #region Update Scheduling /// /// @@ -327,7 +358,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - private void ScheduleFullUpdate() + public void ScheduleFullUpdate() { m_updateFlag = 2; } @@ -335,7 +366,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - private void ScheduleTerseUpdate() + public void ScheduleTerseUpdate() { if (m_updateFlag < 1) { diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index f9fbe875fd..56e5a0a7f0 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -582,7 +582,6 @@ namespace OpenSim.Region.Environment.Scenes client.OnObjectName += PrimName; client.OnLinkObjects += LinkObjects; client.OnObjectDuplicate += DuplicateObject; - client.OnModifyTerrain += ModifyTerrain; client.OnParcelPropertiesRequest += new ParcelPropertiesRequest(m_LandManager.handleParcelPropertiesRequest); client.OnParcelDivideRequest += new ParcelDivideRequest(m_LandManager.handleParcelDivideRequest);