public void GetProperites(SimClient client) { ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock(); proper.ObjectData[0].ItemID = LLUUID.Zero; // this.uuid; proper.ObjectData[0].CreationDate = (ulong)this.primData.CreationDate; proper.ObjectData[0].CreatorID = this.primData.OwnerID; proper.ObjectData[0].FolderID = LLUUID.Zero; proper.ObjectData[0].FromTaskID = LLUUID.Zero; proper.ObjectData[0].GroupID = LLUUID.Zero; proper.ObjectData[0].InventorySerial = 0; proper.ObjectData[0].LastOwnerID = LLUUID.Zero; proper.ObjectData[0].ObjectID = this.uuid; proper.ObjectData[0].OwnerID = primData.OwnerID; proper.ObjectData[0].TouchName = new byte[0]; proper.ObjectData[0].TextureID = new byte[0]; proper.ObjectData[0].SitName = new byte[0]; proper.ObjectData[0].Name = new byte[0]; proper.ObjectData[0].Description = new byte[0]; proper.ObjectData[0].OwnerMask = this.primData.OwnerMask; proper.ObjectData[0].NextOwnerMask = this.primData.NextOwnerMask; proper.ObjectData[0].GroupMask = this.primData.GroupMask; proper.ObjectData[0].EveryoneMask = this.primData.EveryoneMask; proper.ObjectData[0].BaseMask = this.primData.BaseMask; client.OutPacket(proper); }
void ObjectSelectHandler(Packet packet, Agent agent) { ObjectSelectPacket select = (ObjectSelectPacket)packet; for (int i = 0; i < select.ObjectData.Length; i++) { ObjectPropertiesPacket properties = new ObjectPropertiesPacket(); properties.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; properties.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock(); SimulationObject obj; if (server.Scene.TryGetObject(select.ObjectData[i].ObjectLocalID, out obj)) { //Logger.DebugLog("Selecting object " + obj.Prim.LocalID); properties.ObjectData[0].BaseMask = (uint)obj.Prim.Properties.Permissions.BaseMask; properties.ObjectData[0].CreationDate = Utils.DateTimeToUnixTime(obj.Prim.Properties.CreationDate); properties.ObjectData[0].CreatorID = obj.Prim.Properties.CreatorID; properties.ObjectData[0].Description = Utils.StringToBytes(obj.Prim.Properties.Description); properties.ObjectData[0].EveryoneMask = (uint)obj.Prim.Properties.Permissions.EveryoneMask; properties.ObjectData[0].GroupID = obj.Prim.Properties.GroupID; properties.ObjectData[0].GroupMask = (uint)obj.Prim.Properties.Permissions.GroupMask; properties.ObjectData[0].LastOwnerID = obj.Prim.Properties.LastOwnerID; properties.ObjectData[0].Name = Utils.StringToBytes(obj.Prim.Properties.Name); properties.ObjectData[0].NextOwnerMask = (uint)obj.Prim.Properties.Permissions.NextOwnerMask; properties.ObjectData[0].ObjectID = obj.Prim.ID; properties.ObjectData[0].OwnerID = obj.Prim.Properties.OwnerID; properties.ObjectData[0].OwnerMask = (uint)obj.Prim.Properties.Permissions.OwnerMask; properties.ObjectData[0].OwnershipCost = obj.Prim.Properties.OwnershipCost; properties.ObjectData[0].SalePrice = obj.Prim.Properties.SalePrice; properties.ObjectData[0].SaleType = (byte)obj.Prim.Properties.SaleType; properties.ObjectData[0].SitName = new byte[0]; properties.ObjectData[0].TextureID = new byte[0]; properties.ObjectData[0].TouchName = new byte[0]; server.UDP.SendPacket(agent.AgentID, properties, PacketCategory.Transaction); } else { Logger.Log("ObjectSelect sent for missing object " + select.ObjectData[i].ObjectLocalID, Helpers.LogLevel.Warning); properties.ObjectData[0].Description = new byte[0]; properties.ObjectData[0].Name = new byte[0]; properties.ObjectData[0].SitName = new byte[0]; properties.ObjectData[0].TextureID = new byte[0]; properties.ObjectData[0].TouchName = new byte[0]; KillObjectPacket kill = new KillObjectPacket(); kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); kill.ObjectData[0].ID = select.ObjectData[i].ObjectLocalID; server.UDP.SendPacket(agent.AgentID, kill, PacketCategory.State); } } }
private void SignalTaskInventoryChange(LLAgent agent, LLPrimitive prim) { // Send an ObjectPropertiesReply to inform the client that inventory has changed ObjectPropertiesPacket props = new ObjectPropertiesPacket(); props.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; props.ObjectData[0] = LLUtil.BuildEntityPropertiesBlock(prim); m_udp.SendPacket(agent, props, ThrottleCategory.Task, false); // Signal this prim for serialization m_scene.EntityAddOrUpdate(this, prim, UpdateFlags.Serialize, 0); }
// Processes object properties packets private Packet ProcessObjectProperties(Packet packet, IPEndPoint endpoint) { ObjectPropertiesPacket properties = (ObjectPropertiesPacket)packet; ObjectPropertiesPacket.ObjectDataBlock[] blocks = properties.ObjectData; for (int i = 0; i < blocks.Length; i++) { ObjectPropertiesPacket.ObjectDataBlock block = blocks[i]; uint localid = 0; if (AvatarUUIDtoID.TryGetValue(block.ObjectID, out localid)) { SayToUser(string.Format("{0}: {1}", block.ObjectID, Utils.BytesToString(block.Name))); } } return(packet); }
void ObjectSelectHandler(Packet packet, LLAgent agent) { ObjectSelectPacket select = (ObjectSelectPacket)packet; for (int i = 0; i < select.ObjectData.Length; i++) { ISceneEntity entity; if (m_scene.TryGetEntity(select.ObjectData[i].ObjectLocalID, out entity)) { if (entity is IPhysical) ((IPhysical)entity).Frozen = true; ObjectPropertiesPacket properties = new ObjectPropertiesPacket(); properties.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; properties.ObjectData[0] = LLUtil.BuildEntityPropertiesBlock(entity); m_udp.SendPacket(agent, properties, ThrottleCategory.Task, false); } else { m_log.Warn("ObjectSelect sent for missing object " + select.ObjectData[i].ObjectLocalID); SendSingleKillPacket(agent, select.ObjectData[i].ObjectLocalID); } } }
void ObjectNameHandler(Packet packet, LLAgent agent) { ObjectNamePacket name = (ObjectNamePacket)packet; List<uint> localIDs = new List<uint>(name.ObjectData.Length); for (int i = 0; i < name.ObjectData.Length; i++) localIDs.Add(name.ObjectData[i].LocalID); List<LLPrimitive> prims; if (!CanModify(agent, localIDs, out prims)) return; for (int i = 0; i < prims.Count; i++) { LLPrimitive prim = prims[i]; prim.Name = Utils.BytesToString(name.ObjectData[i].Name); // Send an ObjectPropertiesReply to with the new name ObjectPropertiesPacket props = new ObjectPropertiesPacket(); props.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; props.ObjectData[0] = LLUtil.BuildEntityPropertiesBlock(prim); m_udp.SendPacket(agent, props, ThrottleCategory.Task, false); // Signal this entity for serialization m_scene.EntityAddOrUpdate(this, prim, UpdateFlags.Serialize, 0); } }
public void GetProperites(SimClient client) { ObjectPropertiesPacket proper = new ObjectPropertiesPacket(); proper.ObjectData = new ObjectPropertiesPacket.ObjectDataBlock[1]; proper.ObjectData[0] = new ObjectPropertiesPacket.ObjectDataBlock(); proper.ObjectData[0].ItemID = LLUUID.Zero; // this.uuid; proper.ObjectData[0].CreationDate = (ulong) this.primData.CreationDate; proper.ObjectData[0].CreatorID = this.primData.OwnerID; proper.ObjectData[0].FolderID = LLUUID.Zero; proper.ObjectData[0].FromTaskID = LLUUID.Zero; proper.ObjectData[0].GroupID = LLUUID.Zero; proper.ObjectData[0].InventorySerial = 0; proper.ObjectData[0].LastOwnerID = LLUUID.Zero; proper.ObjectData[0].ObjectID = this.uuid; proper.ObjectData[0].OwnerID = primData.OwnerID; proper.ObjectData[0].TouchName = new byte[0]; proper.ObjectData[0].TextureID = new byte[0]; proper.ObjectData[0].SitName = new byte[0]; proper.ObjectData[0].Name = new byte[0]; proper.ObjectData[0].Description = new byte[0]; proper.ObjectData[0].OwnerMask = this.primData.OwnerMask; proper.ObjectData[0].NextOwnerMask = this.primData.NextOwnerMask; proper.ObjectData[0].GroupMask = this.primData.GroupMask; proper.ObjectData[0].EveryoneMask = this.primData.EveryoneMask; proper.ObjectData[0].BaseMask = this.primData.BaseMask; client.OutPacket(proper); }