コード例 #1
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);
        }
コード例 #2
0
        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);
                }
            }
        }
コード例 #3
0
ファイル: TaskInventory.cs プロジェクト: jhurliman/simian
        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);
        }
コード例 #4
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);
        }
コード例 #5
0
ファイル: TaskInventory.cs プロジェクト: osgrid/openmetaverse
        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);
        }
コード例 #6
0
ファイル: Objects.cs プロジェクト: osgrid/openmetaverse
        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);
                }
            }
        }
コード例 #7
0
ファイル: Objects.cs プロジェクト: osgrid/openmetaverse
        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);
            }
        }
コード例 #8
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);
        }