public Packet RezObject(InventoryItem iitem, LLVector3 TargetPos) { if (iitem.Type != 6) { Client.Log("RezObject has only been tested with items of type 6", Helpers.LogLevel.Warning); } RezObjectPacket p = new RezObjectPacket(); p.AgentData.AgentID = AgentID; p.AgentData.SessionID = SessionID; p.AgentData.GroupID = LLUUID.Zero; p.InventoryData.TransactionID = LLUUID.Random(); p.InventoryData.GroupOwned = iitem.GroupOwned; p.InventoryData.CRC = iitem.CRC; p.InventoryData.CreationDate = iitem.CreationDate; p.InventoryData.SaleType = iitem.SaleType; p.InventoryData.BaseMask = iitem.BaseMask; p.InventoryData.Name = Helpers.StringToField(iitem.Name); p.InventoryData.InvType = iitem.InvType; p.InventoryData.Type = iitem.Type; p.InventoryData.GroupID = iitem.GroupID; p.InventoryData.SalePrice = iitem.SalePrice; p.InventoryData.OwnerID = iitem.OwnerID; p.InventoryData.CreatorID = iitem.CreatorID; p.InventoryData.ItemID = iitem.ItemID; p.InventoryData.FolderID = iitem.FolderID; p.InventoryData.EveryoneMask = iitem.EveryoneMask; p.InventoryData.Description = Helpers.StringToField(iitem.Description); p.InventoryData.Flags = iitem.Flags; p.InventoryData.NextOwnerMask = iitem.NextOwnerMask; p.InventoryData.GroupMask = iitem.GroupMask; p.InventoryData.OwnerMask = iitem.OwnerMask; p.RezData.FromTaskID = LLUUID.Zero; p.RezData.BypassRaycast = 1; p.RezData.RayStart = Client.Self.Position; p.RezData.RayEnd = TargetPos; p.RezData.RayTargetID = LLUUID.Zero; p.RezData.RayEndIsIntersection = false; p.RezData.RezSelected = false; p.RezData.RemoveItem = false; p.RezData.ItemFlags = iitem.Flags; p.RezData.GroupMask = iitem.GroupMask; p.RezData.EveryoneMask = iitem.EveryoneMask; p.RezData.NextOwnerMask = iitem.NextOwnerMask; return(p); }
/// <summary> /// A function to rez name from inventory. /// </summary> /// <param name="name">InventoryItem to rez</param> /// <param name="pos">Local sim position</param> private void PseudoLLRezObject(InventoryItem name, Vector3 pos) { RezObjectPacket rez = new RezObjectPacket(); rez.AgentData = new RezObjectPacket.AgentDataBlock(); rez.AgentData.AgentID = frame.AgentID; rez.AgentData.SessionID = frame.SessionID; rez.AgentData.GroupID = UUID.Zero; rez.RezData = new RezObjectPacket.RezDataBlock(); rez.RezData.FromTaskID = UUID.Zero; rez.RezData.BypassRaycast = 1; rez.RezData.RayStart = pos; rez.RezData.RayEnd = pos; rez.RezData.RayTargetID = UUID.Zero; rez.RezData.RayEndIsIntersection = false; rez.RezData.RezSelected = false; rez.RezData.RemoveItem = false; rez.RezData.ItemFlags = 0; rez.RezData.GroupMask = 0; rez.RezData.EveryoneMask = 0; rez.RezData.NextOwnerMask = 0; rez.InventoryData = new RezObjectPacket.InventoryDataBlock(); rez.InventoryData.ItemID = name.UUID; rez.InventoryData.FolderID = name.ParentUUID; rez.InventoryData.CreatorID = name.CreatorID; rez.InventoryData.OwnerID = name.OwnerID; rez.InventoryData.GroupID = name.GroupID; rez.InventoryData.BaseMask = 0; rez.InventoryData.OwnerMask = 0; rez.InventoryData.GroupMask = 0; rez.InventoryData.EveryoneMask = 0; rez.InventoryData.NextOwnerMask = 0; rez.InventoryData.GroupOwned = false; rez.InventoryData.TransactionID = UUID.Zero; rez.InventoryData.Type = 6; rez.InventoryData.InvType = 6; rez.InventoryData.Flags = 0; rez.InventoryData.SaleType = 0; rez.InventoryData.SalePrice = 10; rez.InventoryData.Name = Utils.StringToBytes(name.Name); rez.InventoryData.Description = Utils.StringToBytes(name.Description); rez.InventoryData.CreationDate = 0x7fffffff; //name.CreationDate; rez.InventoryData.CRC = 0; rez.Header.Reliable = true; proxy.InjectPacket((Packet)rez, Direction.Outgoing); }
public bool RezObject(SimClient simClient, Packet packet) { RezObjectPacket rezPacket = (RezObjectPacket)packet; AgentInventory inven = this._inventoryCache.GetAgentsInventory(simClient.AgentID); if (inven != null) { if (inven.InventoryItems.ContainsKey(rezPacket.InventoryData.ItemID)) { AssetBase asset = this._assetCache.GetAsset(inven.InventoryItems[rezPacket.InventoryData.ItemID].AssetID); if (asset != null) { PrimData primd = new PrimData(asset.Data); Primitive nPrim = new Primitive(m_clientThreads, m_regionHandle, this); nPrim.CreateFromStorage(primd, rezPacket.RezData.RayEnd, this._primCount, true); this.Entities.Add(nPrim.uuid, nPrim); this._primCount++; this._inventoryCache.DeleteInventoryItem(simClient, rezPacket.InventoryData.ItemID); } } } return(true); }
/// <summary> /// Rez an object from inventory /// </summary> /// <param name="simulator">Simulator to place object in</param> /// <param name="rotation">Rotation of the object when rezzed</param> /// <param name="position">Vector of where to place object</param> /// <param name="item">InventoryObject object containing item details</param> /// <param name="groupOwner">LLUUID of group to own the object</param> /// <param name="queryID">User defined queryID to correlate replies</param> /// <param name="requestObjectDetails">if set to true the simulator /// will automatically send object detail packet(s) back to the client</param> public LLUUID RequestRezFromInventory(Simulator simulator, LLQuaternion rotation, LLVector3 position, InventoryObject item, LLUUID groupOwner, LLUUID queryID, bool requestObjectDetails) { RezObjectPacket add = new RezObjectPacket(); add.AgentData.AgentID = _Client.Self.AgentID; add.AgentData.SessionID = _Client.Self.SessionID; add.AgentData.GroupID = groupOwner; add.RezData.FromTaskID = LLUUID.Zero; add.RezData.BypassRaycast = 1; add.RezData.RayStart = position; add.RezData.RayEnd = position; add.RezData.RayTargetID = LLUUID.Zero; add.RezData.RayEndIsIntersection = false; add.RezData.RezSelected = requestObjectDetails; add.RezData.RemoveItem = false; add.RezData.ItemFlags = item.Flags; add.RezData.GroupMask = (uint)item.Permissions.GroupMask; add.RezData.EveryoneMask = (uint)item.Permissions.EveryoneMask; add.RezData.NextOwnerMask = (uint)item.Permissions.NextOwnerMask; add.InventoryData.ItemID = item.UUID; add.InventoryData.FolderID = item.ParentUUID; add.InventoryData.CreatorID = item.CreatorID; add.InventoryData.OwnerID = item.OwnerID; add.InventoryData.GroupID = item.GroupID; add.InventoryData.BaseMask = (uint)item.Permissions.BaseMask; add.InventoryData.OwnerMask = (uint)item.Permissions.OwnerMask; add.InventoryData.GroupMask = (uint)item.Permissions.GroupMask; add.InventoryData.EveryoneMask = (uint)item.Permissions.EveryoneMask; add.InventoryData.NextOwnerMask = (uint)item.Permissions.NextOwnerMask; add.InventoryData.GroupOwned = item.GroupOwned; add.InventoryData.TransactionID = queryID; add.InventoryData.Type = (sbyte)item.InventoryType; add.InventoryData.InvType = (sbyte)item.InventoryType; add.InventoryData.Flags = item.Flags; add.InventoryData.SaleType = (byte)item.SaleType; add.InventoryData.SalePrice = item.SalePrice; add.InventoryData.Name = Helpers.StringToField(item.Name); add.InventoryData.Description = Helpers.StringToField(item.Description); add.InventoryData.CreationDate = (int)Helpers.DateTimeToUnixTime(item.CreationDate); _Client.Network.SendPacket(add, simulator); return queryID; }
public Packet RezObject(InventoryItem iitem, LLVector3 TargetPos) { if (iitem.Type != 6) { Client.Log("RezObject has only been tested with items of type 6", Helpers.LogLevel.Warning); } RezObjectPacket p = new RezObjectPacket(); p.AgentData.AgentID = AgentID; p.AgentData.SessionID = SessionID; p.AgentData.GroupID = LLUUID.Zero; p.InventoryData.TransactionID = LLUUID.Random(); p.InventoryData.GroupOwned = iitem.GroupOwned; p.InventoryData.CRC = iitem.CRC; p.InventoryData.CreationDate = iitem.CreationDate; p.InventoryData.SaleType = iitem.SaleType; p.InventoryData.BaseMask = iitem.BaseMask; p.InventoryData.Name = Helpers.StringToField(iitem.Name); p.InventoryData.InvType = iitem.InvType; p.InventoryData.Type = iitem.Type; p.InventoryData.GroupID = iitem.GroupID; p.InventoryData.SalePrice = iitem.SalePrice; p.InventoryData.OwnerID = iitem.OwnerID; p.InventoryData.CreatorID = iitem.CreatorID; p.InventoryData.ItemID = iitem.ItemID; p.InventoryData.FolderID = iitem.FolderID; p.InventoryData.EveryoneMask = iitem.EveryoneMask; p.InventoryData.Description = Helpers.StringToField(iitem.Description); p.InventoryData.Flags = iitem.Flags; p.InventoryData.NextOwnerMask= iitem.NextOwnerMask; p.InventoryData.GroupMask = iitem.GroupMask; p.InventoryData.OwnerMask = iitem.OwnerMask; p.RezData.FromTaskID = LLUUID.Zero; p.RezData.BypassRaycast = 1; p.RezData.RayStart = Client.Self.Position; p.RezData.RayEnd = TargetPos; p.RezData.RayTargetID = LLUUID.Zero; p.RezData.RayEndIsIntersection = false; p.RezData.RezSelected = false; p.RezData.RemoveItem = false; p.RezData.ItemFlags = iitem.Flags; p.RezData.GroupMask = iitem.GroupMask; p.RezData.EveryoneMask = iitem.EveryoneMask; p.RezData.NextOwnerMask = iitem.NextOwnerMask; return p; }
/// <summary> /// Rez an object from inventory /// </summary> /// <param name="simulator">Simulator to place object in</param> /// <param name="taskID">TaskID object when rezzed</param> /// <param name="rotation">Rotation of the object when rezzed</param> /// <param name="position">Vector of where to place object</param> /// <param name="item">InventoryItem object containing item details</param> /// <param name="groupOwner">UUID of group to own the object</param> /// <param name="queryID">User defined queryID to correlate replies</param> /// <param name="rezSelected">If set to true, the CreateSelected flag /// will be set on the rezzed object</param> public UUID RequestRezFromInventory(Simulator simulator, UUID taskID, Quaternion rotation, Vector3 position, InventoryItem item, UUID groupOwner, UUID queryID, bool rezSelected) { RezObjectPacket add = new RezObjectPacket(); add.AgentData.AgentID = Client.Self.AgentID; add.AgentData.SessionID = Client.Self.SessionID; add.AgentData.GroupID = groupOwner; add.RezData.FromTaskID = taskID; add.RezData.BypassRaycast = 1; add.RezData.RayStart = position; add.RezData.RayEnd = position; add.RezData.RayTargetID = UUID.Zero; add.RezData.RayEndIsIntersection = false; add.RezData.RezSelected = rezSelected; add.RezData.RemoveItem = false; add.RezData.ItemFlags = (uint)item.Flags; add.RezData.GroupMask = (uint)item.Permissions.GroupMask; add.RezData.EveryoneMask = (uint)item.Permissions.EveryoneMask; add.RezData.NextOwnerMask = (uint)item.Permissions.NextOwnerMask; add.InventoryData.ItemID = item.UUID; add.InventoryData.FolderID = item.ParentUUID; add.InventoryData.CreatorID = item.CreatorID; add.InventoryData.OwnerID = item.OwnerID; add.InventoryData.GroupID = item.GroupID; add.InventoryData.BaseMask = (uint)item.Permissions.BaseMask; add.InventoryData.OwnerMask = (uint)item.Permissions.OwnerMask; add.InventoryData.GroupMask = (uint)item.Permissions.GroupMask; add.InventoryData.EveryoneMask = (uint)item.Permissions.EveryoneMask; add.InventoryData.NextOwnerMask = (uint)item.Permissions.NextOwnerMask; add.InventoryData.GroupOwned = item.GroupOwned; add.InventoryData.TransactionID = queryID; add.InventoryData.Type = (sbyte)item.InventoryType; add.InventoryData.InvType = (sbyte)item.InventoryType; add.InventoryData.Flags = (uint)item.Flags; add.InventoryData.SaleType = (byte)item.SaleType; add.InventoryData.SalePrice = item.SalePrice; add.InventoryData.Name = Utils.StringToBytes(item.Name); add.InventoryData.Description = Utils.StringToBytes(item.Description); add.InventoryData.CreationDate = (int)Utils.DateTimeToUnixTime(item.CreationDate); Client.Network.SendPacket(add, simulator); // Remove from store if the item is no copy if (Store.Items.ContainsKey(item.UUID) && Store[item.UUID] is InventoryItem) { InventoryItem invItem = (InventoryItem)Store[item.UUID]; if ((invItem.Permissions.OwnerMask & PermissionMask.Copy) == PermissionMask.None) { Store.RemoveNodeFor(invItem); } } return queryID; }
private void RezSinglePrim(LLPrimitive prim, RezObjectPacket.RezDataBlock rezData, Vector3 position) { // Set the target position for root prims if (prim.Parent == null) prim.RelativePosition = position; // TODO: Is this right? prim.Prim.Flags |= (PrimFlags)rezData.ItemFlags; if (rezData.RezSelected) prim.Prim.Flags |= PrimFlags.CreateSelected; // TODO: Is this right? prim.Prim.Properties.Permissions = GetDefaultPermissions(); prim.Prim.Properties.Permissions.EveryoneMask = (PermissionMask)rezData.EveryoneMask; prim.Prim.Properties.Permissions.GroupMask = (PermissionMask)rezData.GroupMask; prim.Prim.Properties.Permissions.NextOwnerMask = (PermissionMask)rezData.NextOwnerMask; m_scene.EntityAddOrUpdate(this, prim, UpdateFlags.FullUpdate, 0); }