diff options
More work on SceneObject/Primitive and building (Linking is a work in progress as is all). Committing now as I've finished for the night and will be continued tomorrow.
-rw-r--r-- | OpenSim/Framework/General/Interfaces/IClientAPI.cs | 4 | ||||
-rw-r--r-- | OpenSim/Framework/General/Types/PrimitiveBaseShape.cs | 5 | ||||
-rw-r--r-- | OpenSim/Region/ClientStack/ClientView.API.cs | 11 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Primitive.cs | 53 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | 40 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/Scene.cs | 18 | ||||
-rw-r--r-- | OpenSim/Region/Environment/Scenes/SceneObject.cs | 21 |
7 files changed, 129 insertions, 23 deletions
diff --git a/OpenSim/Framework/General/Interfaces/IClientAPI.cs b/OpenSim/Framework/General/Interfaces/IClientAPI.cs index 2110b74..d62247c 100644 --- a/OpenSim/Framework/General/Interfaces/IClientAPI.cs +++ b/OpenSim/Framework/General/Interfaces/IClientAPI.cs | |||
@@ -163,8 +163,8 @@ namespace OpenSim.Framework.Interfaces | |||
163 | void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint); | 163 | void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint); |
164 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID , uint flags); | 164 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLQuaternion rotation, LLUUID textureID , uint flags); |
165 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags); | 165 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimData primData, LLVector3 pos, LLUUID textureID, uint flags); |
166 | void SendPrimitiveToClient2(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags, LLUUID objectID, LLUUID ownerID); | 166 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID); |
167 | void SendPrimitiveToClient2(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLUUID textureID, uint flags, LLUUID objectID, LLUUID ownerID); | 167 | void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLUUID textureID, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID); |
168 | void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation); | 168 | void SendPrimTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLQuaternion rotation); |
169 | } | 169 | } |
170 | } | 170 | } |
diff --git a/OpenSim/Framework/General/Types/PrimitiveBaseShape.cs b/OpenSim/Framework/General/Types/PrimitiveBaseShape.cs index 094a8a0..7c8de16 100644 --- a/OpenSim/Framework/General/Types/PrimitiveBaseShape.cs +++ b/OpenSim/Framework/General/Types/PrimitiveBaseShape.cs | |||
@@ -36,7 +36,6 @@ namespace OpenSim.Framework.Types | |||
36 | public LLVector3 Scale; | 36 | public LLVector3 Scale; |
37 | public byte PathCurve; | 37 | public byte PathCurve; |
38 | public byte ProfileCurve; | 38 | public byte ProfileCurve; |
39 | public uint ParentID = 0; | ||
40 | public ushort ProfileHollow; | 39 | public ushort ProfileHollow; |
41 | public sbyte PathRadiusOffset; | 40 | public sbyte PathRadiusOffset; |
42 | public byte PathRevolutions; | 41 | public byte PathRevolutions; |
@@ -73,13 +72,13 @@ namespace OpenSim.Framework.Types | |||
73 | 72 | ||
74 | } | 73 | } |
75 | 74 | ||
76 | public static PrimitiveBaseShape DefaultCube() | 75 | public static PrimitiveBaseShape DefaultBox() |
77 | { | 76 | { |
78 | PrimitiveBaseShape primShape = new PrimitiveBaseShape(); | 77 | PrimitiveBaseShape primShape = new PrimitiveBaseShape(); |
79 | 78 | ||
79 | primShape.type = ShapeType.Box; | ||
80 | primShape.Scale = new LLVector3(0.5f, 0.5f, 0.5f); | 80 | primShape.Scale = new LLVector3(0.5f, 0.5f, 0.5f); |
81 | primShape.PCode = 9; | 81 | primShape.PCode = 9; |
82 | primShape.ParentID = 0; | ||
83 | primShape.PathBegin = 0; | 82 | primShape.PathBegin = 0; |
84 | primShape.PathEnd = 0; | 83 | primShape.PathEnd = 0; |
85 | primShape.PathScaleX = 0; | 84 | primShape.PathScaleX = 0; |
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs index 7a9c6cf..51f02da 100644 --- a/OpenSim/Region/ClientStack/ClientView.API.cs +++ b/OpenSim/Region/ClientStack/ClientView.API.cs | |||
@@ -629,7 +629,7 @@ namespace OpenSim.Region.ClientStack | |||
629 | } | 629 | } |
630 | 630 | ||
631 | 631 | ||
632 | public void SendPrimitiveToClient2(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags, LLUUID objectID, LLUUID ownerID) | 632 | public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLQuaternion rotation, LLUUID textureID, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID) |
633 | { | 633 | { |
634 | ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); | 634 | ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); |
635 | outPacket.RegionData.RegionHandle = regionHandle; | 635 | outPacket.RegionData.RegionHandle = regionHandle; |
@@ -639,6 +639,8 @@ namespace OpenSim.Region.ClientStack | |||
639 | outPacket.ObjectData[0].ID = localID; | 639 | outPacket.ObjectData[0].ID = localID; |
640 | outPacket.ObjectData[0].FullID = objectID; | 640 | outPacket.ObjectData[0].FullID = objectID; |
641 | outPacket.ObjectData[0].OwnerID = ownerID; | 641 | outPacket.ObjectData[0].OwnerID = ownerID; |
642 | outPacket.ObjectData[0].Text = enc.GetBytes(text); | ||
643 | outPacket.ObjectData[0].ParentID = parentID; | ||
642 | byte[] pb = pos.GetBytes(); | 644 | byte[] pb = pos.GetBytes(); |
643 | Array.Copy(pb, 0, outPacket.ObjectData[0].ObjectData, 0, pb.Length); | 645 | Array.Copy(pb, 0, outPacket.ObjectData[0].ObjectData, 0, pb.Length); |
644 | byte[] rot = rotation.GetBytes(); | 646 | byte[] rot = rotation.GetBytes(); |
@@ -646,7 +648,7 @@ namespace OpenSim.Region.ClientStack | |||
646 | OutPacket(outPacket); | 648 | OutPacket(outPacket); |
647 | } | 649 | } |
648 | 650 | ||
649 | public void SendPrimitiveToClient2(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLUUID textureID, uint flags, LLUUID objectID, LLUUID ownerID) | 651 | public void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, LLUUID textureID, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID) |
650 | { | 652 | { |
651 | ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); | 653 | ObjectUpdatePacket outPacket = new ObjectUpdatePacket(); |
652 | outPacket.RegionData.RegionHandle = regionHandle; | 654 | outPacket.RegionData.RegionHandle = regionHandle; |
@@ -656,6 +658,8 @@ namespace OpenSim.Region.ClientStack | |||
656 | outPacket.ObjectData[0].ID = localID; | 658 | outPacket.ObjectData[0].ID = localID; |
657 | outPacket.ObjectData[0].FullID = objectID; | 659 | outPacket.ObjectData[0].FullID = objectID; |
658 | outPacket.ObjectData[0].OwnerID = ownerID; | 660 | outPacket.ObjectData[0].OwnerID = ownerID; |
661 | outPacket.ObjectData[0].Text = enc.GetBytes(text); | ||
662 | outPacket.ObjectData[0].ParentID = parentID; | ||
659 | byte[] pb = pos.GetBytes(); | 663 | byte[] pb = pos.GetBytes(); |
660 | Array.Copy(pb, 0, outPacket.ObjectData[0].ObjectData, 0, pb.Length); | 664 | Array.Copy(pb, 0, outPacket.ObjectData[0].ObjectData, 0, pb.Length); |
661 | 665 | ||
@@ -876,6 +880,7 @@ namespace OpenSim.Region.ClientStack | |||
876 | LLObject.TextureEntry ntex = new LLObject.TextureEntry(textureID); | 880 | LLObject.TextureEntry ntex = new LLObject.TextureEntry(textureID); |
877 | objectData.TextureEntry = ntex.ToBytes(); | 881 | objectData.TextureEntry = ntex.ToBytes(); |
878 | objectData.OwnerID = primData.OwnerID; | 882 | objectData.OwnerID = primData.OwnerID; |
883 | objectData.ParentID = primData.ParentID; | ||
879 | objectData.PCode = primData.PCode; | 884 | objectData.PCode = primData.PCode; |
880 | objectData.PathBegin = primData.PathBegin; | 885 | objectData.PathBegin = primData.PathBegin; |
881 | objectData.PathEnd = primData.PathEnd; | 886 | objectData.PathEnd = primData.PathEnd; |
@@ -889,7 +894,6 @@ namespace OpenSim.Region.ClientStack | |||
889 | objectData.Scale = primData.Scale; | 894 | objectData.Scale = primData.Scale; |
890 | objectData.PathCurve = primData.PathCurve; | 895 | objectData.PathCurve = primData.PathCurve; |
891 | objectData.ProfileCurve = primData.ProfileCurve; | 896 | objectData.ProfileCurve = primData.ProfileCurve; |
892 | objectData.ParentID = primData.ParentID; | ||
893 | objectData.ProfileHollow = primData.ProfileHollow; | 897 | objectData.ProfileHollow = primData.ProfileHollow; |
894 | objectData.PathRadiusOffset = primData.PathRadiusOffset; | 898 | objectData.PathRadiusOffset = primData.PathRadiusOffset; |
895 | objectData.PathRevolutions = primData.PathRevolutions; | 899 | objectData.PathRevolutions = primData.PathRevolutions; |
@@ -916,7 +920,6 @@ namespace OpenSim.Region.ClientStack | |||
916 | objectData.Scale = primData.Scale; | 920 | objectData.Scale = primData.Scale; |
917 | objectData.PathCurve = primData.PathCurve; | 921 | objectData.PathCurve = primData.PathCurve; |
918 | objectData.ProfileCurve = primData.ProfileCurve; | 922 | objectData.ProfileCurve = primData.ProfileCurve; |
919 | objectData.ParentID = primData.ParentID; | ||
920 | objectData.ProfileHollow = primData.ProfileHollow; | 923 | objectData.ProfileHollow = primData.ProfileHollow; |
921 | objectData.PathRadiusOffset = primData.PathRadiusOffset; | 924 | objectData.PathRadiusOffset = primData.PathRadiusOffset; |
922 | objectData.PathRevolutions = primData.PathRevolutions; | 925 | objectData.PathRevolutions = primData.PathRevolutions; |
diff --git a/OpenSim/Region/Environment/Scenes/Primitive.cs b/OpenSim/Region/Environment/Scenes/Primitive.cs index 97e7974..dd8bb02 100644 --- a/OpenSim/Region/Environment/Scenes/Primitive.cs +++ b/OpenSim/Region/Environment/Scenes/Primitive.cs | |||
@@ -22,8 +22,18 @@ namespace OpenSim.Region.Environment.Scenes | |||
22 | private Dictionary<LLUUID, InventoryItem> inventoryItems; | 22 | private Dictionary<LLUUID, InventoryItem> inventoryItems; |
23 | 23 | ||
24 | private string description = ""; | 24 | private string description = ""; |
25 | |||
26 | public string SitName = ""; | ||
27 | public string TouchName = ""; | ||
28 | public string Text = ""; | ||
29 | |||
30 | public LLUUID CreatorID; | ||
25 | public LLUUID OwnerID; | 31 | public LLUUID OwnerID; |
32 | public LLUUID LastOwnerID; | ||
26 | public Int32 CreationDate; | 33 | public Int32 CreationDate; |
34 | |||
35 | public uint ParentID = 0; | ||
36 | |||
27 | public uint OwnerMask = FULL_MASK_PERMISSIONS; | 37 | public uint OwnerMask = FULL_MASK_PERMISSIONS; |
28 | public uint NextOwnerMask = FULL_MASK_PERMISSIONS; | 38 | public uint NextOwnerMask = FULL_MASK_PERMISSIONS; |
29 | public uint GroupMask = FULL_MASK_PERMISSIONS; | 39 | public uint GroupMask = FULL_MASK_PERMISSIONS; |
@@ -32,9 +42,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
32 | 42 | ||
33 | private PrimitiveBaseShape m_Shape; | 43 | private PrimitiveBaseShape m_Shape; |
34 | 44 | ||
35 | private SceneObject m_RootParent; | 45 | public SceneObject m_RootParent; |
36 | private bool isRootPrim; | 46 | public bool isRootPrim; |
37 | private EntityBase m_Parent; | 47 | public EntityBase m_Parent; |
38 | 48 | ||
39 | public override LLVector3 Pos | 49 | public override LLVector3 Pos |
40 | { | 50 | { |
@@ -51,7 +61,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
51 | } | 61 | } |
52 | set | 62 | set |
53 | { | 63 | { |
54 | this.m_pos = value - m_Parent.Pos; //should we being subtracting the parent position | 64 | this.m_pos = m_Parent.Pos - value; //should we being subtracting the parent position |
55 | } | 65 | } |
56 | 66 | ||
57 | } | 67 | } |
@@ -108,6 +118,8 @@ namespace OpenSim.Region.Environment.Scenes | |||
108 | { | 118 | { |
109 | this.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; | 119 | this.CreationDate = (Int32)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds; |
110 | this.OwnerID = ownerID; | 120 | this.OwnerID = ownerID; |
121 | this.CreatorID = this.OwnerID; | ||
122 | this.LastOwnerID = LLUUID.Zero; | ||
111 | this.Pos = addPacket.ObjectData.RayEnd; | 123 | this.Pos = addPacket.ObjectData.RayEnd; |
112 | this.uuid = LLUUID.Random(); | 124 | this.uuid = LLUUID.Random(); |
113 | this.m_localId = (uint)(localID); | 125 | this.m_localId = (uint)(localID); |
@@ -128,7 +140,6 @@ namespace OpenSim.Region.Environment.Scenes | |||
128 | pShape.Scale = addPacket.ObjectData.Scale; | 140 | pShape.Scale = addPacket.ObjectData.Scale; |
129 | pShape.PathCurve = addPacket.ObjectData.PathCurve; | 141 | pShape.PathCurve = addPacket.ObjectData.PathCurve; |
130 | pShape.ProfileCurve = addPacket.ObjectData.ProfileCurve; | 142 | pShape.ProfileCurve = addPacket.ObjectData.ProfileCurve; |
131 | pShape.ParentID = 0; | ||
132 | pShape.ProfileHollow = addPacket.ObjectData.ProfileHollow; | 143 | pShape.ProfileHollow = addPacket.ObjectData.ProfileHollow; |
133 | pShape.PathRadiusOffset = addPacket.ObjectData.PathRadiusOffset; | 144 | pShape.PathRadiusOffset = addPacket.ObjectData.PathRadiusOffset; |
134 | pShape.PathRevolutions = addPacket.ObjectData.PathRevolutions; | 145 | pShape.PathRevolutions = addPacket.ObjectData.PathRevolutions; |
@@ -142,7 +153,37 @@ namespace OpenSim.Region.Environment.Scenes | |||
142 | 153 | ||
143 | public void AddToChildren(SceneObject linkObject) | 154 | public void AddToChildren(SceneObject linkObject) |
144 | { | 155 | { |
156 | // Console.WriteLine("linking new prims " + linkObject.rootLocalID + " to me (" + this.LocalId + ")"); | ||
157 | //TODO check permissions | ||
158 | this.children.Add(linkObject.rootPrimitive); | ||
159 | linkObject.rootPrimitive.SetNewParent(this, this.m_RootParent); | ||
160 | |||
161 | this.m_world.DeleteEntity(linkObject.rootUUID); | ||
162 | linkObject.rootPrimitive = null; | ||
163 | } | ||
164 | |||
165 | public void SetNewParent(Primitive newParent, SceneObject rootParent) | ||
166 | { | ||
167 | LLVector3 oldPos = new LLVector3(this.Pos.X, this.Pos.Y, this.Pos.Z); | ||
168 | //Console.WriteLine("have a new parent and my old position is " + this.Pos.X + " , " + this.Pos.Y + " , " + this.Pos.Z); | ||
169 | this.isRootPrim = false; | ||
170 | this.m_Parent = newParent; | ||
171 | this.ParentID = newParent.LocalId; | ||
172 | this.SetRootParent(rootParent); | ||
173 | // Console.WriteLine("have a new parent and its position is " + this.m_Parent.Pos.X + " , " + this.m_Parent.Pos.Y + " , " + this.m_Parent.Pos.Z); | ||
174 | this.Pos = oldPos; | ||
175 | // Console.WriteLine("have a new parent so my new offset position is " + this.Pos.X + " , " + this.Pos.Y + " , " + this.Pos.Z); | ||
176 | this.updateFlag = 1; | ||
177 | |||
178 | } | ||
145 | 179 | ||
180 | public void SetRootParent(SceneObject newRoot) | ||
181 | { | ||
182 | this.m_RootParent = newRoot; | ||
183 | foreach (Primitive child in children) | ||
184 | { | ||
185 | child.SetRootParent(newRoot); | ||
186 | } | ||
146 | } | 187 | } |
147 | 188 | ||
148 | /// <summary> | 189 | /// <summary> |
@@ -187,7 +228,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
187 | LLVector3 lPos; | 228 | LLVector3 lPos; |
188 | lPos = this.Pos; | 229 | lPos = this.Pos; |
189 | 230 | ||
190 | remoteClient.SendPrimitiveToClient2(this.m_regionHandle, 64096, this.LocalId, this.m_Shape, lPos, new LLUUID("00000000-0000-0000-9999-000000000005"), this.flags, this.uuid, this.OwnerID); | 231 | remoteClient.SendPrimitiveToClient(this.m_regionHandle, 64096, this.LocalId, this.m_Shape, lPos, new LLUUID("00000000-0000-0000-9999-000000000005"), this.flags, this.uuid, this.OwnerID, this.Text, this.ParentID); |
191 | } | 232 | } |
192 | 233 | ||
193 | /// <summary> | 234 | /// <summary> |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs index f55c118..d8533b0 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs | |||
@@ -193,8 +193,41 @@ namespace OpenSim.Region.Environment.Scenes | |||
193 | /// <param name="childPrims"></param> | 193 | /// <param name="childPrims"></param> |
194 | public void LinkObjects(uint parentPrim, List<uint> childPrims) | 194 | public void LinkObjects(uint parentPrim, List<uint> childPrims) |
195 | { | 195 | { |
196 | 196 | SceneObject parenPrim = null; | |
197 | foreach (EntityBase ent in Entities.Values) | ||
198 | { | ||
199 | if (ent is SceneObject) | ||
200 | { | ||
201 | if (((SceneObject)ent).rootLocalID == parentPrim) | ||
202 | { | ||
203 | parenPrim = (SceneObject)ent; | ||
204 | break; | ||
205 | } | ||
206 | } | ||
207 | } | ||
197 | 208 | ||
209 | List<SceneObject> children = new List<SceneObject>(); | ||
210 | if (parenPrim != null) | ||
211 | { | ||
212 | for (int i = 0; i < childPrims.Count; i++) | ||
213 | { | ||
214 | foreach (EntityBase ent in Entities.Values) | ||
215 | { | ||
216 | if (ent is SceneObject) | ||
217 | { | ||
218 | if (((SceneObject)ent).rootLocalID == childPrims[i]) | ||
219 | { | ||
220 | children.Add((SceneObject)ent); | ||
221 | } | ||
222 | } | ||
223 | } | ||
224 | } | ||
225 | } | ||
226 | |||
227 | foreach (SceneObject sceneObj in children) | ||
228 | { | ||
229 | parenPrim.AddNewChildPrims(sceneObj); | ||
230 | } | ||
198 | } | 231 | } |
199 | 232 | ||
200 | /// <summary> | 233 | /// <summary> |
@@ -275,7 +308,10 @@ namespace OpenSim.Region.Environment.Scenes | |||
275 | { | 308 | { |
276 | if (this.Entities.ContainsKey(objectID)) | 309 | if (this.Entities.ContainsKey(objectID)) |
277 | { | 310 | { |
278 | ((PrimitiveOld)this.Entities[objectID]).GrapMovement(offset, pos, remoteClient); | 311 | if (this.Entities[objectID] is SceneObject) |
312 | { | ||
313 | ((SceneObject)this.Entities[objectID]).GrapMovement(offset, pos, remoteClient); | ||
314 | } | ||
279 | } | 315 | } |
280 | } | 316 | } |
281 | 317 | ||
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 08adc84..77058cc 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -461,10 +461,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
461 | client.OnRequestMapBlocks += this.RequestMapBlocks; | 461 | client.OnRequestMapBlocks += this.RequestMapBlocks; |
462 | client.OnTeleportLocationRequest += this.RequestTeleportLocation; | 462 | client.OnTeleportLocationRequest += this.RequestTeleportLocation; |
463 | client.OnObjectSelect += this.SelectPrim; | 463 | client.OnObjectSelect += this.SelectPrim; |
464 | // client.OnGrapUpdate += this.MoveObject; | 464 | client.OnGrapUpdate += this.MoveObject; |
465 | client.OnNameFromUUIDRequest += this.commsManager.HandleUUIDNameRequest; | 465 | client.OnNameFromUUIDRequest += this.commsManager.HandleUUIDNameRequest; |
466 | client.OnObjectDescription += this.PrimDescription; | 466 | client.OnObjectDescription += this.PrimDescription; |
467 | client.OnObjectName += this.PrimName; | 467 | client.OnObjectName += this.PrimName; |
468 | client.OnLinkObjects += this.LinkObjects; | ||
468 | 469 | ||
469 | /* remoteClient.OnParcelPropertiesRequest += new ParcelPropertiesRequest(parcelManager.handleParcelPropertiesRequest); | 470 | /* remoteClient.OnParcelPropertiesRequest += new ParcelPropertiesRequest(parcelManager.handleParcelPropertiesRequest); |
470 | remoteClient.OnParcelDivideRequest += new ParcelDivideRequest(parcelManager.handleParcelDivideRequest); | 471 | remoteClient.OnParcelDivideRequest += new ParcelDivideRequest(parcelManager.handleParcelDivideRequest); |
@@ -585,6 +586,21 @@ namespace OpenSim.Region.Environment.Scenes | |||
585 | #endregion | 586 | #endregion |
586 | 587 | ||
587 | 588 | ||
589 | /// <summary> | ||
590 | /// | ||
591 | /// </summary> | ||
592 | /// <param name="entID"></param> | ||
593 | /// <returns></returns> | ||
594 | public bool DeleteEntity(LLUUID entID) | ||
595 | { | ||
596 | if (this.Entities.ContainsKey(entID)) | ||
597 | { | ||
598 | this.Entities.Remove(entID); | ||
599 | return true; | ||
600 | } | ||
601 | return false; | ||
602 | } | ||
603 | |||
588 | #region RegionCommsHost | 604 | #region RegionCommsHost |
589 | 605 | ||
590 | /// <summary> | 606 | /// <summary> |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObject.cs b/OpenSim/Region/Environment/Scenes/SceneObject.cs index 00df447..2c55a7d 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObject.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObject.cs | |||
@@ -41,7 +41,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
41 | { | 41 | { |
42 | private System.Text.Encoding enc = System.Text.Encoding.ASCII; | 42 | private System.Text.Encoding enc = System.Text.Encoding.ASCII; |
43 | private Dictionary<LLUUID, Primitive> ChildPrimitives = new Dictionary<LLUUID, Primitive>(); //list of all primitive id's that are part of this group | 43 | private Dictionary<LLUUID, Primitive> ChildPrimitives = new Dictionary<LLUUID, Primitive>(); //list of all primitive id's that are part of this group |
44 | protected Primitive rootPrimitive; | 44 | public Primitive rootPrimitive; |
45 | private Scene m_world; | 45 | private Scene m_world; |
46 | protected ulong m_regionHandle; | 46 | protected ulong m_regionHandle; |
47 | 47 | ||
@@ -99,6 +99,16 @@ namespace OpenSim.Region.Environment.Scenes | |||
99 | 99 | ||
100 | } | 100 | } |
101 | 101 | ||
102 | |||
103 | /// <summary> | ||
104 | /// | ||
105 | /// </summary> | ||
106 | /// <param name="primObject"></param> | ||
107 | public void AddNewChildPrims(SceneObject primObject) | ||
108 | { | ||
109 | this.rootPrimitive.AddToChildren(primObject); | ||
110 | } | ||
111 | |||
102 | /// <summary> | 112 | /// <summary> |
103 | /// | 113 | /// |
104 | /// </summary> | 114 | /// </summary> |
@@ -145,6 +155,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
145 | public void GrapMovement(LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) | 155 | public void GrapMovement(LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) |
146 | { | 156 | { |
147 | this.Pos = pos; | 157 | this.Pos = pos; |
158 | this.rootPrimitive.Pos = pos; | ||
148 | this.rootPrimitive.SendTerseUpdateForAllChildren(remoteClient); | 159 | this.rootPrimitive.SendTerseUpdateForAllChildren(remoteClient); |
149 | } | 160 | } |
150 | 161 | ||
@@ -161,17 +172,17 @@ namespace OpenSim.Region.Environment.Scenes | |||
161 | proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock(); | 172 | proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock(); |
162 | proper.ObjectData[0].ItemID = LLUUID.Zero; | 173 | proper.ObjectData[0].ItemID = LLUUID.Zero; |
163 | proper.ObjectData[0].CreationDate = (ulong)this.rootPrimitive.CreationDate; | 174 | proper.ObjectData[0].CreationDate = (ulong)this.rootPrimitive.CreationDate; |
164 | proper.ObjectData[0].CreatorID = this.rootPrimitive.OwnerID; | 175 | proper.ObjectData[0].CreatorID = this.rootPrimitive.CreatorID; |
165 | proper.ObjectData[0].FolderID = LLUUID.Zero; | 176 | proper.ObjectData[0].FolderID = LLUUID.Zero; |
166 | proper.ObjectData[0].FromTaskID = LLUUID.Zero; | 177 | proper.ObjectData[0].FromTaskID = LLUUID.Zero; |
167 | proper.ObjectData[0].GroupID = LLUUID.Zero; | 178 | proper.ObjectData[0].GroupID = LLUUID.Zero; |
168 | proper.ObjectData[0].InventorySerial = 0; | 179 | proper.ObjectData[0].InventorySerial = 0; |
169 | proper.ObjectData[0].LastOwnerID = LLUUID.Zero; | 180 | proper.ObjectData[0].LastOwnerID = this.rootPrimitive.LastOwnerID; |
170 | proper.ObjectData[0].ObjectID = this.rootUUID; | 181 | proper.ObjectData[0].ObjectID = this.rootUUID; |
171 | proper.ObjectData[0].OwnerID = this.rootPrimitive.OwnerID; | 182 | proper.ObjectData[0].OwnerID = this.rootPrimitive.OwnerID; |
172 | proper.ObjectData[0].TouchName = new byte[0]; | 183 | proper.ObjectData[0].TouchName = enc.GetBytes(this.rootPrimitive.TouchName + "\0"); |
173 | proper.ObjectData[0].TextureID = new byte[0]; | 184 | proper.ObjectData[0].TextureID = new byte[0]; |
174 | proper.ObjectData[0].SitName = new byte[0]; | 185 | proper.ObjectData[0].SitName = enc.GetBytes(this.rootPrimitive.SitName +"\0") ; |
175 | proper.ObjectData[0].Name = enc.GetBytes(this.rootPrimitive.Name +"\0"); | 186 | proper.ObjectData[0].Name = enc.GetBytes(this.rootPrimitive.Name +"\0"); |
176 | proper.ObjectData[0].Description = enc.GetBytes(this.rootPrimitive.Description +"\0"); | 187 | proper.ObjectData[0].Description = enc.GetBytes(this.rootPrimitive.Description +"\0"); |
177 | proper.ObjectData[0].OwnerMask = this.rootPrimitive.OwnerMask; | 188 | proper.ObjectData[0].OwnerMask = this.rootPrimitive.OwnerMask; |