コード例 #1
0
        void Objects_AvatarSitChanged(object sender, AvatarSitChangedEventArgs e)
        {
            if (e.Avatar.LocalID != Client.Self.LocalID)
            {
                return;
            }

            sitting = e.SittingOn != 0;

            if (Client.Self.SittingOn != 0 && !Client.Network.CurrentSim.ObjectsPrimitives.ContainsKey(Client.Self.SittingOn))
            {
                Client.Objects.RequestObject(Client.Network.CurrentSim, Client.Self.SittingOn);
            }

            SitStateChanged?.Invoke(this, new SitEventArgs(sitting));
        }
コード例 #2
0
ファイル: StateManager.cs プロジェクト: tbutiu/radegast
        void Objects_AvatarSitChanged(object sender, AvatarSitChangedEventArgs e)
        {
            if (e.Avatar.LocalID != client.Self.LocalID)
            {
                return;
            }

            sitting = e.SittingOn != 0;

            if (client.Self.SittingOn != 0 && !client.Network.CurrentSim.ObjectsPrimitives.ContainsKey(client.Self.SittingOn))
            {
                client.Objects.RequestObject(client.Network.CurrentSim, client.Self.SittingOn);
            }

            if (SitStateChanged != null)
            {
                SitStateChanged(this, new SitEventArgs(this.sitting));
            }
        }
コード例 #3
0
        /// <summary>
        /// Raised when the simulator sends us data containing updated sit information for our Avatar
        /// </summary>
        /// <see cref="http://lib.openmetaverse.org/docs/trunk/html/T_OpenMetaverse_AvatarSitChangedEventArgs.htm"/>
        /// <param name="sender">Source of this event.</param>
        /// <param name="e">Provides updates sit position data </param>
        void Objects_AvatarSitChanged(object sender, AvatarSitChangedEventArgs e)
        {
            lock (greedyBotLock)
            {
                if (e.Avatar.ID != Instance.Client.Self.AgentID)
                {
                    return;
                }

                // We got up, forget everything we know about the game.
                if (e.SittingOn == 0)
                {
                    if (currentState != State.NotRunning)
                    {
                        Utils.OutputLine("Objects_AvatarSitChanged: Stopping thread work...", Utils.OutputLevel.Game);
                        ThreadPool.Instance.StopThreadWork();
                        ClearGame();
                        //Instance.Client.Self.RequestSit(sitTargetLamp, Vector3.Zero);
                    }
                }
            }
        }
コード例 #4
0
        /*
         * TODO
         *   On-Avatar-Sit-Changed
         *  simulator: "OpenSim Test"
         *  avatar: '(avatar "Nephrael Rae")
         *  sittingOn: 3135593693
         *  oldSeat: 0
         */
        public override void Objects_OnAvatarSitChanged(object sender, AvatarSitChangedEventArgs e)
        {
            var simulator = e.Simulator;

            if (!IsMaster(simulator))
            {
                return;
            }
            var avatar    = e.Avatar;
            var sittingOn = e.SittingOn;
            var oldSeat   = e.OldSeat;

            if (avatar != null)
            {
                DeclareAvatar(avatar.ID);
            }
            if (!MaintainActions)
            {
                return;
            }
            EventQueue.Enqueue("Objects_OnAvatarSitChanged", () =>
            {
                SimObject user    = GetSimObject(avatar, simulator);
                SimObject newSit  = GetSimObject(sittingOn, simulator);
                SimObject oldSit  = GetSimObject(oldSeat, simulator);
                string newSitName = null;
                string oldSitName = null;
                if (newSit != null)
                {
                    newSitName = newSit.SitName;
                }
                if (newSitName == null)
                {
                    newSitName = "SitOnObject";
                }
                if (oldSit != null)
                {
                    oldSitName = oldSit.SitName;
                }
                if (oldSitName == null)
                {
                    oldSitName = "SitOnObject";
                }

                //if (SendAllEvents)
                // SendNewEvent("On-Avatar-Sit-Changed", user, newSit, oldSit);
                if (user != null)
                {
                    if (oldSeat != 0)
                    {
                        LogSitEvent(user, SimEventType.Stop, oldSitName,
                                    ToParameter("doneBy", user),
                                    ToParameter("objectActedOn", oldSit));
                    }
                    if (sittingOn != 0)
                    {
                        LogSitEvent(user, SimEventType.Start, newSitName,
                                    ToParameter("doneBy", user),
                                    ToParameter("objectActedOn", newSit));
                    }
                    if (sittingOn + oldSeat == 0)
                    {
                        LogSitEvent(user, SimEventType.Once, "SitChangedUnknown", ToParameter("doneBy", user));
                    }
                }
                else
                {
                    //object[] eventArgs = new object[] { user, newSit, oldSit };
                    if (oldSit != null)
                    {
                        oldSit.AddCanBeTargetOf(1, SendPipelineEvent(
                                                    ACogbotEvent.CreateEvent(sender, SimEventType.Stop, newSitName,
                                                                             SimEventType.SIT | SimEventType.REGIONAL,
                                                                             ToParameter("doneBy", avatar),
                                                                             ToParameter("objectActedOn", oldSit))));
                    }
                    if (newSit != null)
                    {
                        newSit.AddCanBeTargetOf(1, SendPipelineEvent(
                                                    ACogbotEvent.CreateEvent(sender, SimEventType.Start, newSitName,
                                                                             SimEventType.SIT | SimEventType.REGIONAL,
                                                                             ToParameter("doneBy", avatar),
                                                                             ToParameter("objectActedOn", newSit))));
                    }
                }
            });
        }