public void ParcelProperties(ParcelPropertiesPacket parcelPropertiesPacket, UUID avatarID) { OSD item = EventQueueHelper.ParcelProperties(parcelPropertiesPacket); Enqueue(item, avatarID); }
public static OSD ParcelProperties(ParcelPropertiesPacket parcelPropertiesPacket) { OSDMap parcelProperties = new OSDMap(); OSDMap body = new OSDMap(); OSDArray ageVerificationBlock = new OSDArray(); OSDMap ageVerificationMap = new OSDMap(); ageVerificationMap.Add("RegionDenyAgeUnverified", OSD.FromBoolean(parcelPropertiesPacket.AgeVerificationBlock.RegionDenyAgeUnverified)); ageVerificationBlock.Add(ageVerificationMap); body.Add("AgeVerificationBlock", ageVerificationBlock); // LL sims send media info in this event queue message but it's not in the UDP // packet we construct this event queue message from. This should be refactored in // other areas of the code so it can all be send in the same message. Until then we will // still send the media info via UDP //OSDArray mediaData = new OSDArray(); //OSDMap mediaDataMap = new OSDMap(); //mediaDataMap.Add("MediaDesc", OSD.FromString("")); //mediaDataMap.Add("MediaHeight", OSD.FromInteger(0)); //mediaDataMap.Add("MediaLoop", OSD.FromInteger(0)); //mediaDataMap.Add("MediaType", OSD.FromString("type/type")); //mediaDataMap.Add("MediaWidth", OSD.FromInteger(0)); //mediaDataMap.Add("ObscureMedia", OSD.FromInteger(0)); //mediaDataMap.Add("ObscureMusic", OSD.FromInteger(0)); //mediaData.Add(mediaDataMap); //body.Add("MediaData", mediaData); OSDArray parcelData = new OSDArray(); OSDMap parcelDataMap = new OSDMap(); OSDArray AABBMax = new OSDArray(3); AABBMax.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMax.X)); AABBMax.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMax.Y)); AABBMax.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMax.Z)); parcelDataMap.Add("AABBMax", AABBMax); OSDArray AABBMin = new OSDArray(3); AABBMin.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMin.X)); AABBMin.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMin.Y)); AABBMin.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMin.Z)); parcelDataMap.Add("AABBMin", AABBMin); parcelDataMap.Add("Area", OSD.FromInteger(parcelPropertiesPacket.ParcelData.Area)); parcelDataMap.Add("AuctionID", OSD.FromBinary(uintToByteArray(parcelPropertiesPacket.ParcelData.AuctionID))); parcelDataMap.Add("AuthBuyerID", OSD.FromUUID(parcelPropertiesPacket.ParcelData.AuthBuyerID)); parcelDataMap.Add("Bitmap", OSD.FromBinary(parcelPropertiesPacket.ParcelData.Bitmap)); parcelDataMap.Add("Category", OSD.FromInteger((int)parcelPropertiesPacket.ParcelData.Category)); parcelDataMap.Add("ClaimDate", OSD.FromInteger(parcelPropertiesPacket.ParcelData.ClaimDate)); parcelDataMap.Add("ClaimPrice", OSD.FromInteger(parcelPropertiesPacket.ParcelData.ClaimPrice)); parcelDataMap.Add("Desc", OSD.FromString(Utils.BytesToString(parcelPropertiesPacket.ParcelData.Desc))); parcelDataMap.Add("GroupID", OSD.FromUUID(parcelPropertiesPacket.ParcelData.GroupID)); parcelDataMap.Add("GroupPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.GroupPrims)); parcelDataMap.Add("IsGroupOwned", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.IsGroupOwned)); parcelDataMap.Add("LandingType", OSD.FromInteger(parcelPropertiesPacket.ParcelData.LandingType)); parcelDataMap.Add("LocalID", OSD.FromInteger(parcelPropertiesPacket.ParcelData.LocalID)); parcelDataMap.Add("MaxPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.MaxPrims)); parcelDataMap.Add("MediaAutoScale", OSD.FromInteger((int)parcelPropertiesPacket.ParcelData.MediaAutoScale)); parcelDataMap.Add("MediaID", OSD.FromUUID(parcelPropertiesPacket.ParcelData.MediaID)); parcelDataMap.Add("MediaURL", OSD.FromString(Utils.BytesToString(parcelPropertiesPacket.ParcelData.MediaURL))); parcelDataMap.Add("MusicURL", OSD.FromString(Utils.BytesToString(parcelPropertiesPacket.ParcelData.MusicURL))); parcelDataMap.Add("Name", OSD.FromString(Utils.BytesToString(parcelPropertiesPacket.ParcelData.Name))); parcelDataMap.Add("OtherCleanTime", OSD.FromInteger(parcelPropertiesPacket.ParcelData.OtherCleanTime)); parcelDataMap.Add("OtherCount", OSD.FromInteger(parcelPropertiesPacket.ParcelData.OtherCount)); parcelDataMap.Add("OtherPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.OtherPrims)); parcelDataMap.Add("OwnerID", OSD.FromUUID(parcelPropertiesPacket.ParcelData.OwnerID)); parcelDataMap.Add("OwnerPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.OwnerPrims)); parcelDataMap.Add("ParcelFlags", OSD.FromBinary(uintToByteArray(parcelPropertiesPacket.ParcelData.ParcelFlags))); parcelDataMap.Add("ParcelPrimBonus", OSD.FromReal(parcelPropertiesPacket.ParcelData.ParcelPrimBonus)); parcelDataMap.Add("PassHours", OSD.FromReal(parcelPropertiesPacket.ParcelData.PassHours)); parcelDataMap.Add("PassPrice", OSD.FromInteger(parcelPropertiesPacket.ParcelData.PassPrice)); parcelDataMap.Add("PublicCount", OSD.FromInteger(parcelPropertiesPacket.ParcelData.PublicCount)); parcelDataMap.Add("RegionDenyAnonymous", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.RegionDenyAnonymous)); parcelDataMap.Add("RegionDenyIdentified", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.RegionDenyIdentified)); parcelDataMap.Add("RegionDenyTransacted", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.RegionDenyTransacted)); parcelDataMap.Add("RegionPushOverride", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.RegionPushOverride)); parcelDataMap.Add("RentPrice", OSD.FromInteger(parcelPropertiesPacket.ParcelData.RentPrice)); parcelDataMap.Add("RequestResult", OSD.FromInteger(parcelPropertiesPacket.ParcelData.RequestResult)); parcelDataMap.Add("SalePrice", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SalePrice)); parcelDataMap.Add("SelectedPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SelectedPrims)); parcelDataMap.Add("SelfCount", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SelfCount)); parcelDataMap.Add("SequenceID", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SequenceID)); parcelDataMap.Add("SimWideMaxPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SimWideMaxPrims)); parcelDataMap.Add("SimWideTotalPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SimWideTotalPrims)); parcelDataMap.Add("SnapSelection", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.SnapSelection)); parcelDataMap.Add("SnapshotID", OSD.FromUUID(parcelPropertiesPacket.ParcelData.SnapshotID)); parcelDataMap.Add("Status", OSD.FromInteger((int)parcelPropertiesPacket.ParcelData.Status)); parcelDataMap.Add("TotalPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.TotalPrims)); OSDArray UserLocation = new OSDArray(3); UserLocation.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLocation.X)); UserLocation.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLocation.Y)); UserLocation.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLocation.Z)); parcelDataMap.Add("UserLocation", UserLocation); OSDArray UserLookAt = new OSDArray(3); UserLookAt.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLookAt.X)); UserLookAt.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLookAt.Y)); UserLookAt.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLookAt.Z)); parcelDataMap.Add("UserLookAt", UserLookAt); parcelData.Add(parcelDataMap); body.Add("ParcelData", parcelData); parcelProperties.Add("body", body); parcelProperties.Add("message", OSD.FromString("ParcelProperties")); return(parcelProperties); }
public static OSD ParcelProperties(ParcelPropertiesPacket parcelPropertiesPacket) { OSDMap parcelProperties = new OSDMap(); OSDMap body = new OSDMap(); OSDArray ageVerificationBlock = new OSDArray(); OSDMap ageVerificationMap = new OSDMap(); ageVerificationMap.Add("RegionDenyAgeUnverified", OSD.FromBoolean(parcelPropertiesPacket.AgeVerificationBlock.RegionDenyAgeUnverified)); ageVerificationBlock.Add(ageVerificationMap); body.Add("AgeVerificationBlock", ageVerificationBlock); // LL sims send media info in this event queue message but it's not in the UDP // packet we construct this event queue message from. This should be refactored in // other areas of the code so it can all be send in the same message. Until then we will // still send the media info via UDP //OSDArray mediaData = new OSDArray(); //OSDMap mediaDataMap = new OSDMap(); //mediaDataMap.Add("MediaDesc", OSD.FromString("")); //mediaDataMap.Add("MediaHeight", OSD.FromInteger(0)); //mediaDataMap.Add("MediaLoop", OSD.FromInteger(0)); //mediaDataMap.Add("MediaType", OSD.FromString("type/type")); //mediaDataMap.Add("MediaWidth", OSD.FromInteger(0)); //mediaDataMap.Add("ObscureMedia", OSD.FromInteger(0)); //mediaDataMap.Add("ObscureMusic", OSD.FromInteger(0)); //mediaData.Add(mediaDataMap); //body.Add("MediaData", mediaData); OSDArray parcelData = new OSDArray(); OSDMap parcelDataMap = new OSDMap(); OSDArray AABBMax = new OSDArray(3); AABBMax.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMax.X)); AABBMax.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMax.Y)); AABBMax.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMax.Z)); parcelDataMap.Add("AABBMax", AABBMax); OSDArray AABBMin = new OSDArray(3); AABBMin.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMin.X)); AABBMin.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMin.Y)); AABBMin.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.AABBMin.Z)); parcelDataMap.Add("AABBMin", AABBMin); parcelDataMap.Add("Area", OSD.FromInteger(parcelPropertiesPacket.ParcelData.Area)); parcelDataMap.Add("AuctionID", OSD.FromBinary(uintToByteArray(parcelPropertiesPacket.ParcelData.AuctionID))); parcelDataMap.Add("AuthBuyerID", OSD.FromUUID(parcelPropertiesPacket.ParcelData.AuthBuyerID)); parcelDataMap.Add("Bitmap", OSD.FromBinary(parcelPropertiesPacket.ParcelData.Bitmap)); parcelDataMap.Add("Category", OSD.FromInteger((int)parcelPropertiesPacket.ParcelData.Category)); parcelDataMap.Add("ClaimDate", OSD.FromInteger(parcelPropertiesPacket.ParcelData.ClaimDate)); parcelDataMap.Add("ClaimPrice", OSD.FromInteger(parcelPropertiesPacket.ParcelData.ClaimPrice)); parcelDataMap.Add("Desc", OSD.FromString(Utils.BytesToString(parcelPropertiesPacket.ParcelData.Desc))); parcelDataMap.Add("GroupID", OSD.FromUUID(parcelPropertiesPacket.ParcelData.GroupID)); parcelDataMap.Add("GroupPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.GroupPrims)); parcelDataMap.Add("IsGroupOwned", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.IsGroupOwned)); parcelDataMap.Add("LandingType", OSD.FromInteger(parcelPropertiesPacket.ParcelData.LandingType)); parcelDataMap.Add("LocalID", OSD.FromInteger(parcelPropertiesPacket.ParcelData.LocalID)); parcelDataMap.Add("MaxPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.MaxPrims)); parcelDataMap.Add("MediaAutoScale", OSD.FromInteger((int)parcelPropertiesPacket.ParcelData.MediaAutoScale)); parcelDataMap.Add("MediaID", OSD.FromUUID(parcelPropertiesPacket.ParcelData.MediaID)); parcelDataMap.Add("MediaURL", OSD.FromString(Utils.BytesToString(parcelPropertiesPacket.ParcelData.MediaURL))); parcelDataMap.Add("MusicURL", OSD.FromString(Utils.BytesToString(parcelPropertiesPacket.ParcelData.MusicURL))); parcelDataMap.Add("Name", OSD.FromString(Utils.BytesToString(parcelPropertiesPacket.ParcelData.Name))); parcelDataMap.Add("OtherCleanTime", OSD.FromInteger(parcelPropertiesPacket.ParcelData.OtherCleanTime)); parcelDataMap.Add("OtherCount", OSD.FromInteger(parcelPropertiesPacket.ParcelData.OtherCount)); parcelDataMap.Add("OtherPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.OtherPrims)); parcelDataMap.Add("OwnerID", OSD.FromUUID(parcelPropertiesPacket.ParcelData.OwnerID)); parcelDataMap.Add("OwnerPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.OwnerPrims)); parcelDataMap.Add("ParcelFlags", OSD.FromBinary(uintToByteArray(parcelPropertiesPacket.ParcelData.ParcelFlags))); parcelDataMap.Add("ParcelPrimBonus", OSD.FromReal(parcelPropertiesPacket.ParcelData.ParcelPrimBonus)); parcelDataMap.Add("PassHours", OSD.FromReal(parcelPropertiesPacket.ParcelData.PassHours)); parcelDataMap.Add("PassPrice", OSD.FromInteger(parcelPropertiesPacket.ParcelData.PassPrice)); parcelDataMap.Add("PublicCount", OSD.FromInteger(parcelPropertiesPacket.ParcelData.PublicCount)); parcelDataMap.Add("RegionDenyAnonymous", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.RegionDenyAnonymous)); parcelDataMap.Add("RegionDenyIdentified", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.RegionDenyIdentified)); parcelDataMap.Add("RegionDenyTransacted", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.RegionDenyTransacted)); parcelDataMap.Add("RegionPushOverride", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.RegionPushOverride)); parcelDataMap.Add("RentPrice", OSD.FromInteger(parcelPropertiesPacket.ParcelData.RentPrice)); parcelDataMap.Add("RequestResult", OSD.FromInteger(parcelPropertiesPacket.ParcelData.RequestResult)); parcelDataMap.Add("SalePrice", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SalePrice)); parcelDataMap.Add("SelectedPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SelectedPrims)); parcelDataMap.Add("SelfCount", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SelfCount)); parcelDataMap.Add("SequenceID", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SequenceID)); parcelDataMap.Add("SimWideMaxPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SimWideMaxPrims)); parcelDataMap.Add("SimWideTotalPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.SimWideTotalPrims)); parcelDataMap.Add("SnapSelection", OSD.FromBoolean(parcelPropertiesPacket.ParcelData.SnapSelection)); parcelDataMap.Add("SnapshotID", OSD.FromUUID(parcelPropertiesPacket.ParcelData.SnapshotID)); parcelDataMap.Add("Status", OSD.FromInteger((int)parcelPropertiesPacket.ParcelData.Status)); parcelDataMap.Add("TotalPrims", OSD.FromInteger(parcelPropertiesPacket.ParcelData.TotalPrims)); OSDArray UserLocation = new OSDArray(3); UserLocation.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLocation.X)); UserLocation.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLocation.Y)); UserLocation.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLocation.Z)); parcelDataMap.Add("UserLocation", UserLocation); OSDArray UserLookAt = new OSDArray(3); UserLookAt.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLookAt.X)); UserLookAt.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLookAt.Y)); UserLookAt.Add(OSD.FromReal(parcelPropertiesPacket.ParcelData.UserLookAt.Z)); parcelDataMap.Add("UserLookAt", UserLookAt); parcelData.Add(parcelDataMap); body.Add("ParcelData", parcelData); parcelProperties.Add("body", body); parcelProperties.Add("message", OSD.FromString("ParcelProperties")); return parcelProperties; }
void SendParcelProperties(int parcelID, int sequenceID, bool snapSelection, ParcelResult result, Agent agent) { Parcel parcel; if (parcels.TryGetValue(parcelID, out parcel)) { ParcelPropertiesPacket properties = new ParcelPropertiesPacket(); properties.AgeVerificationBlock.RegionDenyAgeUnverified = false; properties.ParcelData.AABBMax = parcel.AABBMax; properties.ParcelData.AABBMin = parcel.AABBMin; properties.ParcelData.Area = parcel.Area; properties.ParcelData.AuctionID = parcel.AuctionID; properties.ParcelData.AuthBuyerID = parcel.AuthBuyerID; properties.ParcelData.Bitmap = parcel.Bitmap; properties.ParcelData.Category = (byte)parcel.Category; properties.ParcelData.ClaimDate = (int)Utils.DateTimeToUnixTime(parcel.ClaimDate); properties.ParcelData.ClaimPrice = parcel.ClaimPrice; properties.ParcelData.Desc = Utils.StringToBytes(parcel.Desc); properties.ParcelData.GroupID = parcel.GroupID; properties.ParcelData.GroupPrims = parcel.GroupPrims; properties.ParcelData.IsGroupOwned = parcel.IsGroupOwned; properties.ParcelData.LandingType = (byte)parcel.Landing; properties.ParcelData.LocalID = parcel.LocalID; properties.ParcelData.MaxPrims = parcel.MaxPrims; properties.ParcelData.MediaAutoScale = parcel.Media.MediaAutoScale; properties.ParcelData.MediaID = parcel.Media.MediaID; properties.ParcelData.MediaURL = Utils.StringToBytes(parcel.Media.MediaURL); properties.ParcelData.MusicURL = Utils.StringToBytes(parcel.MusicURL); properties.ParcelData.Name = Utils.StringToBytes(parcel.Name); properties.ParcelData.OtherCleanTime = parcel.OtherCleanTime; properties.ParcelData.OtherCount = parcel.OtherCount; properties.ParcelData.OtherPrims = parcel.OtherPrims; properties.ParcelData.OwnerID = parcel.OwnerID; properties.ParcelData.OwnerPrims = parcel.OwnerPrims; properties.ParcelData.ParcelFlags = (uint)parcel.Flags; properties.ParcelData.ParcelPrimBonus = parcel.ParcelPrimBonus; properties.ParcelData.PassHours = parcel.PassHours; properties.ParcelData.PassPrice = parcel.PassPrice; properties.ParcelData.PublicCount = parcel.PublicCount; properties.ParcelData.RegionDenyAnonymous = parcel.RegionDenyAnonymous; properties.ParcelData.RegionDenyIdentified = false; // Deprecated properties.ParcelData.RegionDenyTransacted = false; // Deprecated properties.ParcelData.RegionPushOverride = parcel.RegionPushOverride; properties.ParcelData.RentPrice = parcel.RentPrice; properties.ParcelData.RequestResult = (int)result; properties.ParcelData.SalePrice = parcel.SalePrice; properties.ParcelData.SelectedPrims = 0; // TODO: properties.ParcelData.SelfCount = parcel.SelfCount; properties.ParcelData.SequenceID = sequenceID; properties.ParcelData.SimWideMaxPrims = parcel.SimWideMaxPrims; properties.ParcelData.SimWideTotalPrims = parcel.SimWideTotalPrims; properties.ParcelData.SnapSelection = snapSelection; properties.ParcelData.SnapshotID = parcel.SnapshotID; properties.ParcelData.Status = (byte)parcel.Status; properties.ParcelData.TotalPrims = parcel.TotalPrims; properties.ParcelData.UserLocation = parcel.UserLocation; properties.ParcelData.UserLookAt = parcel.UserLookAt; // HACK: Make everyone think they are the owner of this parcel properties.ParcelData.OwnerID = agent.AgentID; server.UDP.SendPacket(agent.AgentID, properties, PacketCategory.Transaction); } else { Logger.Log("SendParcelProperties() called for unknown parcel " + parcelID, Helpers.LogLevel.Warning); } }
private void ParcelPropertiesHandler(Packet packet, Simulator simulator) { ParcelPropertiesPacket properties = (ParcelPropertiesPacket)packet; byte[] Bitmap = properties.ParcelData.Bitmap; int LocalID = properties.ParcelData.LocalID; // Mark this area as downloaded int x, y, index, subindex; byte val; for (x = 0; x < 64; x++) { for (y = 0; y < 64; y++) { if (simulator.Region.ParcelMarked[y, x] == 0) { index = ((x * 64) + y); subindex = index % 8; index /= 8; val = Bitmap[index]; simulator.Region.ParcelMarked[y, x] = ((val >> subindex) & 1) == 1 ? LocalID : 0; } } } // Fire off the next request, if we are downloading the whole sim bool hasTriggered = false; if (simulator.Region.ParcelDownloading) { for (x = 0; x < 64; x++) { for (y = 0; y < 64; y++) { if (simulator.Region.ParcelMarked[x, y] == 0) { ParcelPropertiesRequestPacket tPacket = new ParcelPropertiesRequestPacket(); tPacket.AgentData.AgentID = Client.Network.AgentID; tPacket.AgentData.SessionID = Client.Network.SessionID; tPacket.ParcelData.SequenceID = -10000; tPacket.ParcelData.West = (x * 4.0f); tPacket.ParcelData.South = (y * 4.0f); tPacket.ParcelData.East = (x * 4.0f) + 4.0f; tPacket.ParcelData.North = (y * 4.0f) + 4.0f; Client.Network.SendPacket(tPacket, simulator); hasTriggered = true; goto exit; } } } exit: ; } // This map is complete, fire callback if (!hasTriggered) { simulator.Region.FilledParcels(); } Parcel parcel = null; lock (simulator.Region.Parcels) { if (!simulator.Region.Parcels.ContainsKey(LocalID)) { simulator.Region.Parcels[LocalID] = new Parcel(simulator); } parcel = simulator.Region.Parcels[LocalID]; } // Save this parcels data // TODO: Lots of values are not being stored, Parcel needs to be expanded to take all the data. // August2006: God help me should I have to type this out again... argh. // October2006: I really shouldnt have typed that. parcel.RequestResult = properties.ParcelData.RequestResult; parcel.SequenceID = properties.ParcelData.SequenceID; parcel.SnapSelection = properties.ParcelData.SnapSelection; parcel.SelfCount = properties.ParcelData.SelfCount; parcel.OtherCount = properties.ParcelData.OtherCount; parcel.PublicCount = properties.ParcelData.PublicCount; parcel.LocalID = LocalID; parcel.OwnerID = properties.ParcelData.OwnerID; parcel.IsGroupOwned = properties.ParcelData.IsGroupOwned; parcel.AuctionID = properties.ParcelData.AuctionID; // parcel.ReservedNewbie = properties.ParcelData.ReservedNewbie; // FIXME FIXME FIXME parcel.ClaimDate = properties.ParcelData.ClaimDate; parcel.ClaimPrice = properties.ParcelData.ClaimPrice; parcel.RentPrice = properties.ParcelData.RentPrice; parcel.AABBMin = properties.ParcelData.AABBMin; parcel.AABBMax = properties.ParcelData.AABBMax; parcel.Bitmap = properties.ParcelData.Bitmap; parcel.Area = properties.ParcelData.Area; parcel.Status = properties.ParcelData.Status; parcel.SimWideMaxObjects = properties.ParcelData.SimWideMaxPrims; parcel.SimWideTotalObjects = properties.ParcelData.SimWideTotalPrims; parcel.MaxObjects = properties.ParcelData.MaxPrims; parcel.TotalObjects = properties.ParcelData.TotalPrims; parcel.OwnerObjects = properties.ParcelData.OwnerPrims; parcel.GroupObjects = properties.ParcelData.GroupPrims; parcel.OtherObjects = properties.ParcelData.OtherPrims; parcel.ParcelObjectBonus = properties.ParcelData.ParcelPrimBonus; parcel.OtherCleanTime = properties.ParcelData.OtherCleanTime; parcel.ParcelFlags = properties.ParcelData.ParcelFlags; parcel.SalePrice = properties.ParcelData.SalePrice; parcel.Name = Helpers.FieldToString(properties.ParcelData.Name); parcel.Desc = Helpers.FieldToString(properties.ParcelData.Desc); parcel.MusicURL = Helpers.FieldToString(properties.ParcelData.MusicURL); parcel.MediaURL = Helpers.FieldToString(properties.ParcelData.MediaURL); parcel.MediaID = properties.ParcelData.MediaID; parcel.MediaAutoScale = properties.ParcelData.MediaAutoScale; parcel.GroupID = properties.ParcelData.GroupID; parcel.PassPrice = properties.ParcelData.PassPrice; parcel.PassHours = properties.ParcelData.PassHours; parcel.Category = properties.ParcelData.Category; parcel.AuthBuyerID = properties.ParcelData.AuthBuyerID; parcel.SnapshotID = properties.ParcelData.SnapshotID; parcel.UserLocation = properties.ParcelData.UserLocation; parcel.UserLookAt = properties.ParcelData.UserLookAt; parcel.LandingType = properties.ParcelData.LandingType; }