From d2b459b8e592b48edbdd03a154dcaa7336d5ce8d Mon Sep 17 00:00:00 2001 From: MW Date: Wed, 18 Jul 2007 20:29:06 +0000 Subject: Sculpted Prims should now work. --- OpenSim/Region/Environment/Scenes/Primitive.cs | 18 ++++++++++++++++++ .../Region/Environment/Scenes/Scene.PacketHandlers.cs | 16 ++++++++++++++++ OpenSim/Region/Environment/Scenes/Scene.cs | 1 + 3 files changed, 35 insertions(+) (limited to 'OpenSim/Region/Environment') diff --git a/OpenSim/Region/Environment/Scenes/Primitive.cs b/OpenSim/Region/Environment/Scenes/Primitive.cs index 4818348..bca8e0c 100644 --- a/OpenSim/Region/Environment/Scenes/Primitive.cs +++ b/OpenSim/Region/Environment/Scenes/Primitive.cs @@ -588,6 +588,24 @@ namespace OpenSim.Region.Environment.Scenes #endregion + public void UpdateExtraParam(ushort type, bool inUse, byte[] data) + { + this.m_Shape.ExtraParams = new byte[data.Length + 7]; + int i =0; + uint length = (uint) data.Length; + this.m_Shape.ExtraParams[i++] = 1; + this.m_Shape.ExtraParams[i++] = (byte)(type % 256); + this.m_Shape.ExtraParams[i++] = (byte)((type >> 8) % 256); + + this.m_Shape.ExtraParams[i++] = (byte)(length % 256); + this.m_Shape.ExtraParams[i++] = (byte)((length >> 8) % 256); + this.m_Shape.ExtraParams[i++] = (byte)((length >> 16) % 256); + this.m_Shape.ExtraParams[i++] = (byte)((length >> 24) % 256); + Array.Copy(data, 0, this.m_Shape.ExtraParams, i, data.Length); + + this.ScheduleFullUpdate(); + } + #region Texture /// diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index f39d56a..5bfdccb 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs @@ -327,6 +327,22 @@ namespace OpenSim.Region.Environment.Scenes } } + public void UpdateExtraParam(uint primLocalID, ushort type, bool inUse, byte[] data) + { + Primitive prim = null; + foreach (EntityBase ent in Entities.Values) + { + if (ent is SceneObject) + { + prim = ((SceneObject)ent).HasChildPrim(primLocalID); + if (prim != null) + { + prim.UpdateExtraParam(type, inUse, data); + break; + } + } + } + } /// /// /// diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 70d2c6a..1ba23b4 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -548,6 +548,7 @@ namespace OpenSim.Region.Environment.Scenes client.OnUpdatePrimGroupMouseRotation += UpdatePrimRotation; client.OnUpdatePrimSingleRotation += UpdatePrimSingleRotation; client.OnUpdatePrimScale += UpdatePrimScale; + client.OnUpdateExtraParams += UpdateExtraParam; client.OnUpdatePrimShape += UpdatePrimShape; client.OnRequestMapBlocks += RequestMapBlocks; client.OnUpdatePrimTexture += UpdatePrimTexture; -- cgit v1.1