protected RezObjectHandler(SceneInterface scene, Vector3 targetpos, List <UUID> assetids, AssetServiceInterface source, UGUI rezzingagent, SceneInterface.RezObjectParams rezparams) : base(scene.AssetService, source, assetids, ReferenceSource.Destination) { m_ItemAssetIDs = assetids; m_Scene = scene; m_TargetPos = targetpos; m_RezzingAgent = rezzingagent; m_RezParams = rezparams; m_RezParams.RezzingAgent = m_RezzingAgent; }
public void HandleObjectDuplicateOnRay(Message m) { var req = (Messages.Object.ObjectDuplicateOnRay)m; if (req.AgentID != req.CircuitAgentID || req.SessionID != req.CircuitSessionID) { return; } SceneInterface scene = Circuits[m.CircuitSceneID].Scene; var objgroups = new List <ObjectGroup>(); foreach (uint localid in req.ObjectLocalIDs) { ObjectPart part; if (scene.Primitives.TryGetValue(localid, out part)) { objgroups.Add(new ObjectGroup(part.ObjectGroup)); } } var rezparams = new SceneInterface.RezObjectParams { RayStart = req.RayStart, RayEnd = req.RayEnd, RayTargetID = req.RayTargetID, RayEndIsIntersection = req.RayEndIsIntersection, RezSelected = false, RemoveItem = false, Scale = Vector3.One, Rotation = Quaternion.Identity, ItemFlags = 0, GroupMask = 0, EveryoneMask = 0, NextOwnerMask = 0 }; scene.RezObjects(objgroups, rezparams); }
public AgentRezObjectHandler(SceneInterface scene, Vector3 targetpos, List <UUID> assetids, AssetServiceInterface source, UGUI rezzingagent, SceneInterface.RezObjectParams rezparams) : base(scene, targetpos, assetids, source, rezzingagent, rezparams) { }
public void HandleRezObjectFromNotecard(Message m) { var req = (Messages.Object.RezObjectFromNotecard)m; if (req.AgentID != req.CircuitAgentID || req.SessionID != req.CircuitSessionID) { return; } SceneInterface scene = Circuits[m.CircuitSceneID].Scene; ObjectPart part; Notecard nc; AssetData data; if (req.NotecardData.ObjectID == UUID.Zero) { /* from inventory */ InventoryItem item; if (!InventoryService.Item.TryGetValue(req.AgentID, req.NotecardData.NotecardItemID, out item)) { return; } if (item.AssetType != AssetType.Notecard) { return; } if (!AssetService.TryGetValue(item.AssetID, out data)) { return; } try { nc = new Notecard(data); } catch { return; } } else if (scene.Primitives.TryGetValue(req.NotecardData.ObjectID, out part)) { /* from object */ ObjectPartInventoryItem item; if (!part.Inventory.TryGetValue(req.NotecardData.NotecardItemID, out item)) { return; } if (item.AssetType != AssetType.Notecard) { return; } if (!scene.AssetService.TryGetValue(item.AssetID, out data)) { return; } try { nc = new Notecard(data); } catch { return; } } else { return; } var assetids = new List <UUID>(); foreach (UUID itemid in req.InventoryData) { NotecardInventoryItem item; if (nc.Inventory.TryGetValue(itemid, out item) && item.AssetType == AssetType.Object) { assetids.Add(item.AssetID); } } var rezparams = new SceneInterface.RezObjectParams { RayStart = req.RezData.RayStart, RayEnd = req.RezData.RayEnd, RayTargetID = req.RezData.RayTargetID, RayEndIsIntersection = req.RezData.RayEndIsIntersection, RezSelected = req.RezData.RezSelected, RemoveItem = req.RezData.RemoveItem, Scale = Vector3.One, Rotation = Quaternion.Identity, ItemFlags = req.RezData.ItemFlags, GroupMask = req.RezData.GroupMask, EveryoneMask = req.RezData.EveryoneMask, NextOwnerMask = req.RezData.NextOwnerMask }; new AgentRezObjectHandler( Circuits[m.CircuitSceneID].Scene, rezparams.RayEnd, assetids, AssetService, Owner, rezparams).QueueWorkItem(); }
public void HandleRezObject(Message m) { var req = (Messages.Object.RezObject)m; if (req.AgentID != req.CircuitAgentID || req.SessionID != req.CircuitSessionID) { return; } InventoryItem item; try { item = InventoryService.Item[Owner.ID, req.InventoryData.ItemID]; } catch { SendAlertMessage("ALERT: CantFindInvItem", m.CircuitSceneID); return; } if (item.AssetType == AssetType.Link) { try { item = InventoryService.Item[Owner.ID, req.InventoryData.ItemID]; } catch { SendAlertMessage("ALERT: CantFindInvItem", m.CircuitSceneID); return; } } if (item.AssetType != AssetType.Object) { SendAlertMessage("ALERT: InvalidObjectParams", m.CircuitSceneID); return; } var rezparams = new SceneInterface.RezObjectParams { RayStart = req.RezData.RayStart, RayEnd = req.RezData.RayEnd, RayTargetID = req.RezData.RayTargetID, RayEndIsIntersection = req.RezData.RayEndIsIntersection, RezSelected = req.RezData.RezSelected, RemoveItem = req.RezData.RemoveItem, Scale = Vector3.One, Rotation = Quaternion.Identity, ItemFlags = req.RezData.ItemFlags, GroupMask = req.RezData.GroupMask, EveryoneMask = req.RezData.EveryoneMask, NextOwnerMask = req.RezData.NextOwnerMask, SourceItem = item }; new AgentRezObjectHandler( Circuits[m.CircuitSceneID].Scene, rezparams.RayEnd, item.AssetID, AssetService, Owner, rezparams).QueueWorkItem(); }