Ejemplo n.º 1
0
 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;
 }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
 public AgentRezObjectHandler(SceneInterface scene, Vector3 targetpos, List <UUID> assetids, AssetServiceInterface source, UGUI rezzingagent, SceneInterface.RezObjectParams rezparams)
     : base(scene, targetpos, assetids, source, rezzingagent, rezparams)
 {
 }
Ejemplo n.º 4
0
        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();
        }
Ejemplo n.º 5
0
        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();
        }