예제 #1
0
        /// <summary>
        /// Update client's Position and LookAt from incoming packet
        /// </summary>
        /// <param name="packet">Incoming AgentMovementCompletePacket</param>
        /// <param name="simulator">[UNUSED]</param>
        private void MovementCompleteHandler(Packet packet, Simulator simulator)
        {
            AgentMovementCompletePacket movement = (AgentMovementCompletePacket)packet;

            this.Position = movement.Data.Position;
            this.LookAt   = movement.Data.LookAt;
        }
예제 #2
0
 public void AgentCompletingMove(NetworkInfo userInfo)
 {
     libsecondlife.Packets.AgentMovementCompletePacket mov = new AgentMovementCompletePacket();
     mov.AgentData.SessionID = userInfo.User.SessionID;
     mov.AgentData.AgentID   = userInfo.User.AgentID;
     mov.Data.RegionHandle   = Globals.Instance.RegionHandle;
     mov.Data.Timestamp      = 1169838966;
     mov.Data.Position       = new LLVector3(100f, 100f, 22f);
     mov.Data.LookAt         = new LLVector3(0.99f, 0.042f, 0);
     _server.SendPacket(mov, true, userInfo);
 }
예제 #3
0
        public void CompleteMovement(World RegionInfo)
        {
            OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Avatar.cs:CompleteMovement() - Constructing AgentMovementComplete packet");
            AgentMovementCompletePacket mov = new AgentMovementCompletePacket();

            mov.AgentData.SessionID = this.ControllingClient.SessionID;
            mov.AgentData.AgentID   = this.ControllingClient.AgentID;
            mov.Data.RegionHandle   = this.m_regionHandle;
            // TODO - dynamicalise this stuff
            mov.Data.Timestamp = 1172750370;
            mov.Data.Position  = this.ControllingClient.startpos;
            mov.Data.LookAt    = new LLVector3(0.99f, 0.042f, 0);

            ControllingClient.OutPacket(mov);
        }
예제 #4
0
        private void CompleteAgentMovementHandler(Packet packet, LLAgent agent)
        {
            //CompleteAgentMovementPacket cam = (CompleteAgentMovementPacket)packet;

            AgentMovementCompletePacket amc = new AgentMovementCompletePacket();

            amc.AgentData.AgentID      = agent.ID;
            amc.AgentData.SessionID    = agent.SessionID;
            amc.Data.LookAt            = Vector3.UnitX;
            amc.Data.Position          = new Vector3(128f, 128f, 25f);
            amc.Data.RegionHandle      = Util.PositionToRegionHandle(m_scene.MinPosition);
            amc.Data.Timestamp         = Utils.DateTimeToUnixTime(DateTime.UtcNow);
            amc.SimData.ChannelVersion = Utils.StringToBytes("Simian");

            m_log.Debug("Sending AgentMovementComplete to " + agent.Name);

            m_udp.SendPacket(agent, amc, ThrottleCategory.Task, false);
        }
예제 #5
0
        void CompleteAgentMovementHandler(Packet packet, Agent agent)
        {
            CompleteAgentMovementPacket request = (CompleteAgentMovementPacket)packet;

            // Create a representation for this agent
            Avatar avatar = new Avatar();
            avatar.ID = agent.AgentID;
            avatar.LocalID = (uint)Interlocked.Increment(ref currentLocalID);
            avatar.Position = new Vector3(128f, 128f, 25f);
            avatar.Rotation = Quaternion.Identity;
            avatar.Scale = new Vector3(1f, 1f, 3f);

            // Set the avatar name
            NameValue[] name = new NameValue[2];
            name[0] = new NameValue("FirstName", NameValue.ValueType.String, NameValue.ClassType.ReadWrite,
                NameValue.SendtoType.SimViewer, agent.FirstName);
            name[1] = new NameValue("LastName", NameValue.ValueType.String, NameValue.ClassType.ReadWrite,
                NameValue.SendtoType.SimViewer, agent.LastName);
            avatar.NameValues = name;

            // Link this avatar up with the corresponding agent
            agent.Avatar = avatar;

            // Give testers a provisionary balance of 1000L
            agent.Balance = 1000;

            AgentMovementCompletePacket complete = new AgentMovementCompletePacket();
            complete.AgentData.AgentID = agent.AgentID;
            complete.AgentData.SessionID = agent.SessionID;
            complete.Data.LookAt = Vector3.UnitX;
            complete.Data.Position = avatar.Position;
            complete.Data.RegionHandle = server.RegionHandle;
            complete.Data.Timestamp = Utils.DateTimeToUnixTime(DateTime.Now);
            complete.SimData.ChannelVersion = Utils.StringToBytes("Simian");

            agent.SendPacket(complete);

            SendLayerData(agent);
        }
예제 #6
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="userInfo"></param>
 public void AgentJoin(NetworkInfo userInfo)
 {
     //inform client of join comlete
     libsecondlife.Packets.AgentMovementCompletePacket mov = new AgentMovementCompletePacket();
     mov.AgentData.SessionID = userInfo.User.SessionID;
     mov.AgentData.AgentID = userInfo.User.AgentID;
     mov.Data.RegionHandle = Globals.Instance.RegionHandle;
     mov.Data.Timestamp = 1169838966;
     mov.Data.Position = new LLVector3(100f, 100f, 22f);
     mov.Data.LookAt = new LLVector3(0.99f, 0.042f, 0);
     _server.SendPacket(mov, true, userInfo);
 }
예제 #7
0
        private void CompleteAgentMovementHandler(Packet packet, LLAgent agent)
        {
            //CompleteAgentMovementPacket cam = (CompleteAgentMovementPacket)packet;

            AgentMovementCompletePacket amc = new AgentMovementCompletePacket();
            amc.AgentData.AgentID = agent.ID;
            amc.AgentData.SessionID = agent.SessionID;
            amc.Data.LookAt = Vector3.UnitX;
            amc.Data.Position = new Vector3(128f, 128f, 25f);
            amc.Data.RegionHandle = Util.PositionToRegionHandle(m_scene.MinPosition);
            amc.Data.Timestamp = Utils.DateTimeToUnixTime(DateTime.UtcNow);
            amc.SimData.ChannelVersion = Utils.StringToBytes("Simian");

            m_log.Debug("Sending AgentMovementComplete to " + agent.Name);

            m_udp.SendPacket(agent, amc, ThrottleCategory.Task, false);
        }
예제 #8
0
        void CompleteAgentMovementHandler(Packet packet, Agent agent)
        {
            // Add this avatar as an object in the scene
            ObjectAddOrUpdate(this, agent.Avatar, agent.Avatar.Prim.OwnerID, 0, PrimFlags.None, UpdateFlags.FullUpdate);

            // Send a response back to the client
            AgentMovementCompletePacket complete = new AgentMovementCompletePacket();
            complete.AgentData.AgentID = agent.ID;
            complete.AgentData.SessionID = agent.SessionID;
            complete.Data.LookAt = Vector3.UnitZ; // TODO: Properly implement LookAt someday
            complete.Data.Position = agent.Avatar.Prim.Position;
            complete.Data.RegionHandle = regionHandle;
            complete.Data.Timestamp = Utils.DateTimeToUnixTime(DateTime.Now);
            complete.SimData.ChannelVersion = Utils.StringToBytes("Simian");

            udp.SendPacket(agent.ID, complete, PacketCategory.Transaction);

            //HACK: Notify everyone when someone logs on to the simulator
            OnlineNotificationPacket online = new OnlineNotificationPacket();
            online.AgentBlock = new OnlineNotificationPacket.AgentBlockBlock[1];
            online.AgentBlock[0] = new OnlineNotificationPacket.AgentBlockBlock();
            online.AgentBlock[0].AgentID = agent.ID;
            udp.BroadcastPacket(online, PacketCategory.State);
        }
예제 #9
0
        public void CompleteMovement(World RegionInfo)
        {
            OpenSim.Framework.Console.MainConsole.Instance.WriteLine("Avatar.cs:CompleteMovement() - Constructing AgentMovementComplete packet");
            AgentMovementCompletePacket mov = new AgentMovementCompletePacket();
            mov.AgentData.SessionID = this.ControllingClient.SessionID;
            mov.AgentData.AgentID = this.ControllingClient.AgentID;
            mov.Data.RegionHandle = this.m_regionHandle;
            // TODO - dynamicalise this stuff
            mov.Data.Timestamp = 1172750370;
            mov.Data.Position = this.ControllingClient.startpos;
            mov.Data.LookAt = new LLVector3(0.99f, 0.042f, 0);

            ControllingClient.OutPacket(mov);
        }
예제 #10
0
        void CompleteAgentMovementHandler(Packet packet, Agent agent)
        {
            CompleteAgentMovementPacket request = (CompleteAgentMovementPacket)packet;

            // Create a representation for this agent
            Avatar avatar = new Avatar();

            avatar.ID                = agent.AgentID;
            avatar.LocalID           = (uint)Interlocked.Increment(ref currentLocalID);
            avatar.Position          = new Vector3(128f, 128f, 25f);
            avatar.Rotation          = Quaternion.Identity;
            avatar.Scale             = new Vector3(0.45f, 0.6f, 1.9f);
            avatar.PrimData.Material = Material.Flesh;
            avatar.PrimData.PCode    = PCode.Avatar;

            // Create a default outfit for the avatar
            Primitive.TextureEntry te = new Primitive.TextureEntry(new UUID("c228d1cf-4b5d-4ba8-84f4-899a0796aa97"));
            avatar.Textures = te;

            // Set the avatar name
            NameValue[] name = new NameValue[2];
            name[0] = new NameValue("FirstName", NameValue.ValueType.String, NameValue.ClassType.ReadWrite,
                                    NameValue.SendtoType.SimViewer, agent.FirstName);
            name[1] = new NameValue("LastName", NameValue.ValueType.String, NameValue.ClassType.ReadWrite,
                                    NameValue.SendtoType.SimViewer, agent.LastName);
            avatar.NameValues = name;

            // Link this avatar up with the corresponding agent
            agent.Avatar = avatar;

            // Give testers a provisionary balance of 1000L
            agent.Balance = 1000;

            // Add this avatar as an object in the scene
            if (ObjectAdd(this, agent, new SimulationObject(agent.Avatar, server), PrimFlags.None))
            {
                // Send a response back to the client
                AgentMovementCompletePacket complete = new AgentMovementCompletePacket();
                complete.AgentData.AgentID      = agent.AgentID;
                complete.AgentData.SessionID    = agent.SessionID;
                complete.Data.LookAt            = Vector3.UnitX;
                complete.Data.Position          = avatar.Position;
                complete.Data.RegionHandle      = server.RegionHandle;
                complete.Data.Timestamp         = Utils.DateTimeToUnixTime(DateTime.Now);
                complete.SimData.ChannelVersion = Utils.StringToBytes("Simian");

                server.UDP.SendPacket(agent.AgentID, complete, PacketCategory.Transaction);

                // Send updates and appearances for every avatar to this new avatar
                SynchronizeStateTo(agent);

                //HACK: Notify everyone when someone logs on to the simulator
                OnlineNotificationPacket online = new OnlineNotificationPacket();
                online.AgentBlock            = new OnlineNotificationPacket.AgentBlockBlock[1];
                online.AgentBlock[0]         = new OnlineNotificationPacket.AgentBlockBlock();
                online.AgentBlock[0].AgentID = agent.AgentID;
                server.UDP.BroadcastPacket(online, PacketCategory.State);
            }
            else
            {
                Logger.Log("Received a CompleteAgentMovement from an avatar already in the scene, " +
                           agent.FullName, Helpers.LogLevel.Warning);
            }
        }