Ejemplo n.º 1
0
    void InitCharacterManager(InitCharacterManagerEvent e)
    {
        for (int i = 0; i < _CharacterList.Length; i++)
        {
            if (e.Type == _CharacterList[i].Type)
            {
                _Character = new GameplayCharacter(_CharacterList[i].Object, _CharacterList[i].Type, _CharacterList[i].Animator, _CharacterList[i].WinObject, _CharacterList[i].LoseObject, _CharacterList[i].Head, _CharacterList[i].IdleFace, _CharacterList[i].SadFace, _CharacterList[i].HappyFace, _CharacterList[i].AnxiousFace);
                _Character.Object.SetActive(true);
                _Character.WinObject.SetActive(false);
                _Character.LoseObject.SetActive(false);

                _CharacterAnxious.transform.SetParent(_Character.Head.transform);
                _CharacterAnxious.GetComponent <RectTransform>().anchoredPosition = new Vector2(0, -53);
            }
            else
            {
                _CharacterList[i].Object.SetActive(false);
                _CharacterList[i].WinObject.SetActive(false);
                _CharacterList[i].LoseObject.SetActive(false);
            }
        }

        _Enemy.Object.SetActive(true);
        _Enemy.WinObject.SetActive(false);
        _Enemy.LoseObject.SetActive(false);
        _LastFace = new FaceEvent(FaceType.IDLE, true);
        FaceHandler(_LastFace);

        _CharacterAnxious.SetActive(false);
        _EnemyAnxious.SetActive(false);
    }
        // -----------------------------------------------------------------------
        // KEY SAMPLE CODE ENDS HERE
        // -----------------------------------------------------------------------

        /// <summary>
        /// This method parses the JSON output, and converts to a sequence of time frames with highlight regions.  One highlight region reprensents a tracked face in the frame.
        /// </summary>
        /// <param name="json">JSON output of face tracking result.</param>
        /// <returns>Sequence of time frames with highlight regions.</returns>
        private static IEnumerable <FrameHighlight> GetHighlights(string json)
        {
            FaceTracking faceTrackingResult = Helpers.FromJson <FaceTracking>(json);

            if (faceTrackingResult.FacesDetected == null)
            {
                yield break;
            }

            float timescale = (float)faceTrackingResult.Timescale;

            Rect invisibleRect = new Rect(new Point(0, 0), new Size(0, 0));  // Uses this rectangle if a specific face is not showing in one frame

            foreach (Fragment <FaceEvent> fragment in faceTrackingResult.Fragments)
            {
                FaceEvent[][] events = fragment.Events;
                if (events == null || events.Length == 0)
                {
                    // If 'Events' is empty, there isn't any face detected in this fragment
                    Rect[] rects = new Rect[faceTrackingResult.FacesDetected.Length];
                    for (int i = 0; i < rects.Length; i++)
                    {
                        rects[i] = invisibleRect;
                    }

                    yield return(new FrameHighlight()
                    {
                        Time = fragment.Start / timescale, HighlightRects = rects
                    });
                }
                else
                {
                    long interval = fragment.Interval.GetValueOrDefault();
                    long start    = fragment.Start;
                    int  i        = 0;
                    foreach (FaceEvent[] evt in events)
                    {
                        Rect[] rects = faceTrackingResult.FacesDetected.Select(face =>
                        {
                            FaceEvent faceRect = evt.FirstOrDefault(x => x.Id == face.FaceId);
                            if (faceRect == null)
                            {
                                return(invisibleRect);
                            }

                            // Creates highlight region at the location of the tracked face
                            return(new Rect(new Point(faceRect.X, faceRect.Y), new Size(faceRect.Width, faceRect.Height)));
                        }).ToArray();

                        yield return(new FrameHighlight()
                        {
                            Time = (start + interval * i) / timescale, HighlightRects = rects
                        });

                        i++;
                    }
                }
            }
        }
Ejemplo n.º 3
0
        public void SetData(FaceEvent faceEvent)
        {
            var faceData  = faceEvent.FaceData;
            var eventType = faceEvent.EventType;

            m_FaceData  = faceData;
            m_EventType = eventType;
            name        = $"{eventType} Face {faceData.ID}";
        }
Ejemplo n.º 4
0
    void FaceHandler(FaceEvent e)
    {
        _LastFace = new FaceEvent(FaceType.IDLE, true);
        switch (e.Type)
        {
        case FaceType.IDLE:
            _CharacterAnxious.SetActive(false);
            _EnemyAnxious.SetActive(false);

            _Character.Head.sprite = _Character.IdleFace;
            _Enemy.Head.sprite     = _Enemy.IdleFace;

            _LastFace = e;
            break;

        case FaceType.HAPPY:
            _CharacterAnxious.SetActive(false);
            _EnemyAnxious.SetActive(false);

            if (e.IsTrue)
            {
                _Character.Head.sprite = _Character.HappyFace;
                _Enemy.Head.sprite     = _Enemy.SadFace;
            }
            else
            {
                _Character.Head.sprite = _Character.SadFace;
                _Enemy.Head.sprite     = _Enemy.HappyFace;
            }
            StartCoroutine(ResetFace());
            break;

        case FaceType.ANXIOUS:
            if (e.IsTrue)
            {
                _Character.Head.sprite = _Character.HappyFace;
                _Enemy.Head.sprite     = _Enemy.AnxiousFace;

                _CharacterAnxious.SetActive(false);
                _EnemyAnxious.SetActive(true);
            }
            else
            {
                _Character.Head.sprite = _Character.AnxiousFace;
                _Enemy.Head.sprite     = _Enemy.HappyFace;

                _CharacterAnxious.SetActive(true);
                _EnemyAnxious.SetActive(false);
            }

            _LastFace = e;
            break;
        }
    }
Ejemplo n.º 5
0
        protected void onFaceHandler(FaceEvent e)
        {
            switch (e.type)
            {
            case FaceEvent.EventType.FaceCollected:
                onFaceCollectedHandler(e);
                break;

            default:
                break;
            }
        }
Ejemplo n.º 6
0
        protected void onFaceCollectedHandler(FaceEvent e)
        {
            Action d = () =>
            {
                FaceInfo f = e.faceinfo;
                switch (f.angleType)
                {
                case FaceData.FaceAngleType.Middle:
                    pictureBox_face1.Image    = f.FaceShotBmp;
                    _fcamera.RequestAngleType = FaceData.FaceAngleType.Up;
                    _faceData[0] = new FaceInfo();
                    _faceData[0].copyContent(f);
                    break;

                case FaceData.FaceAngleType.Up:
                    pictureBox_face2.Image    = f.FaceShotBmp;
                    _fcamera.RequestAngleType = FaceData.FaceAngleType.Down;
                    _faceData[1] = new FaceInfo();
                    _faceData[1].copyContent(f);
                    break;

                case FaceData.FaceAngleType.Down:
                    pictureBox_face3.Image    = f.FaceShotBmp;
                    _fcamera.RequestAngleType = FaceData.FaceAngleType.Left;
                    _faceData[2] = new FaceInfo();
                    _faceData[2].copyContent(f);
                    break;

                case FaceData.FaceAngleType.Left:
                    pictureBox_face4.Image    = f.FaceShotBmp;
                    _fcamera.RequestAngleType = FaceData.FaceAngleType.Right;
                    _faceData[3] = new FaceInfo();
                    _faceData[3].copyContent(f);
                    break;

                case FaceData.FaceAngleType.Right:
                    pictureBox_face5.Image = f.FaceShotBmp;
                    _fcamera.FaceCmd       = FaceCamera.FaceCommand.None;
                    MessageBox.Show("谢谢您的配合,照片采集完成!");
                    _faceData[4] = new FaceInfo();
                    _faceData[4].copyContent(f);
                    break;

                default:
                    break;
                }
            };

            this.BeginInvoke(d);
        }
Ejemplo n.º 7
0
        public override void ExecuteCC()
        {
            // after 1 seconds of no healing and no freidns around us we are going to attack stuff
            if (!NeedToHealSomeone() &&
                DateTime.Now - LastHealAction > TimeSpan.FromSeconds(1) &&
                WowInterface.ObjectManager.GetNearPartymembers(WowInterface.ObjectManager.Player.Position, 48).Count <= 1)
            {
                // basic auto attack defending
                if (WowInterface.ObjectManager.TargetGuid == 0 || WowInterface.HookManager.GetUnitReaction(WowInterface.ObjectManager.Player, WowInterface.ObjectManager.Target) == WowUnitReaction.Friendly)
                {
                    List <WowUnit> nearEnemies = WowInterface.ObjectManager.GetNearEnemies <WowUnit>(WowInterface.ObjectManager.Player.Position, 10).Where(e => e.IsInCombat).ToList();

                    if (nearEnemies.Count > 0)
                    {
                        WowUnit target = nearEnemies.FirstOrDefault();
                        if (target != null)
                        {
                            WowInterface.HookManager.TargetGuid(target.Guid);
                            WowInterface.MovementEngine.Reset();
                        }
                    }
                }
                else
                {
                    if (WowInterface.ObjectManager.Target.Position.GetDistance(WowInterface.ObjectManager.Player.Position) > 4)
                    {
                        WowInterface.MovementEngine.SetState(MovementEngineState.Moving, WowInterface.ObjectManager.Target.Position);
                        WowInterface.MovementEngine.Execute();
                    }
                    else
                    {
                        if (!WowInterface.ObjectManager.Player.IsAutoAttacking && AutoAttackEvent.Run())
                        {
                            WowInterface.HookManager.StartAutoAttack(WowInterface.ObjectManager.Target);
                        }

                        if (FaceEvent.Run())
                        {
                            WowInterface.HookManager.FacePosition(WowInterface.ObjectManager.Player, WowInterface.ObjectManager.Target.Position);
                        }
                    }
                }
            }
        }
Ejemplo n.º 8
0
        protected void onOne2NHandler(FaceEvent e)
        {
            Action d = () =>
            {
                FaceInfo f = e.faceinfo;
                if (f == null)
                {
                    pictureBox_dicFace.Image = null;
                    return;
                }
                if (_lastFaceID == e.faceinfo.faceid)
                {
                    return;
                }

                if (f.userid != 0)
                {
                    _faceCamera.FaceCmd = FaceCamera.FaceCommand.NodShakeDetect;     //转换为检测角度模式

                    UserInfo uinfo = UserInfo.Get(f.userid);
                    label_userinfo.Text =
                        "账号:" + uinfo.usernumber +
                        "\n姓名:" + uinfo.username +
                        "\n性别:" + (uinfo.gender == 0?"男":"女");
                    textBox_balance.Text       = string.Format("{0}", uinfo.money);
                    textBox_payment.Text       = string.Format("{0}", 10);
                    textBox_balanceRemain.Text = "";
                    _faceCamera.SetSpeakOrderedAsync("确认付款请点头,取消付款请摇头。");
                }
                else
                {
                    //输出语音提示,您还没有注册账号
                    _faceCamera.SetSpeakAsync("您尚未注册账号!");
                }
                if (_lastFaceID != e.faceinfo.faceid)
                {
                    _lastFaceID = e.faceinfo.faceid;
                }
            };

            this.BeginInvoke(d);
        }
Ejemplo n.º 9
0
        protected void onFaceHandler(FaceEvent e)
        {
            switch (e.type)
            {
            case FaceEvent.EventType.ShotOne:
                onOne2NHandler(e);
                break;

            case FaceEvent.EventType.HeadNodDetected:
                onHeadNodShakeHandler(e);
                break;

            case FaceEvent.EventType.HeadShakeDetected:
                onHeadNodShakeHandler(e);
                break;

            default:
                break;
            }
        }
Ejemplo n.º 10
0
        protected void onHeadNodShakeHandler(FaceEvent e)
        {
            Action d = () =>
            {
                if (e.type == FaceEvent.EventType.HeadNodDetected)
                {
                    MoneyRecord.Create(_lastFaceID, int.Parse(textBox1.Text), DateTime.Now);
                    yue.Text = (int.Parse(yue.Text) + int.Parse(textBox1.Text)).ToString();
                    _faceCamera.SetSpeakAsync("充值成功,感谢使用");
                }
                else if (e.type == FaceEvent.EventType.HeadShakeDetected)
                {
                    _faceCamera.SetSpeakAsync("充值取消,欢迎下次光临!");
                }

                _faceCamera.FaceCmd = FaceCamera.FaceCommand.ShotOneAndFind;
            };

            this.BeginInvoke(d);
        }
Ejemplo n.º 11
0
        protected void onOne2NHandler(FaceEvent e)
        {
            Action d = () =>
            {
                FaceInfo f = e.faceinfo;
                if (f == null)
                {
                    pictureBox1.Image = null;
                    return;
                }
                if (_lastFaceID == e.faceinfo.faceid)
                {
                    return;
                }

                if (f.userid != 0)
                {
                    _faceCamera.FaceCmd = FaceCamera.FaceCommand.NodShakeDetect;     //转换为检测角度模式

                    UserInfo uinfo = UserInfo.Get(f.userid);
                    xingming.Text  = uinfo.usernumber;
                    shoujihao.Text = uinfo.phonenumber;
                    yue.Text       = uinfo.money.ToString();
                    _faceCamera.SetSpeakOrderedAsync("确认充值请点头,取消充值请摇头。");
                }
                else
                {
                    xingming.Text  = "";
                    shoujihao.Text = "";
                    yue.Text       = "";
                    //输出语音提示,您还没有注册账号
                    _faceCamera.SetSpeakAsync("您尚未注册账号!");
                }
                if (_lastFaceID != e.faceinfo.faceid)
                {
                    _lastFaceID = e.faceinfo.faceid;
                }
            };

            this.BeginInvoke(d);
        }
Ejemplo n.º 12
0
        /// <summary>
        /// Processes the message
        /// </summary>
        /// <param name="connectionBase">The connection base</param>
        /// <param name="message">The playerio message</param>
        /// <param name="handled">Whether the message was already handled</param>
        public void Process(ConnectionBase connectionBase, Message message, bool handled)
        {
            int userId = message.GetInt(0);
            int face   = message.GetInt(1);

            WorldConnection worldCon = (WorldConnection)connectionBase;
            WorldPlayer     player   = worldCon.Players.GetPlayer(userId);

            if (!handled && player != null)
            {
                player.Face = (FaceID)face;
            }

            FaceEvent faceEvent = new FaceEvent()
            {
                Raw    = message,
                Player = player
            };

            connectionBase.RaiseServerEvent <FaceEvent>(faceEvent);
        }
Ejemplo n.º 13
0
        protected void onHeadNodShakeHandler(FaceEvent e)
        {
            Action d = () =>
            {
                if (e.type == FaceEvent.EventType.HeadNodDetected)
                {
                    MoneyRecord.Create(_lastFaceID, -10, DateTime.Now);
                    label_DetectResultHint.Text = "支付成功,祝您用餐愉快!";
                    _faceCamera.SetSpeakAsync("支付成功,祝您用餐愉快!");
                    textBox_balance.Text = (int.Parse(textBox_balance.Text) - 10).ToString();
                }
                else if (e.type == FaceEvent.EventType.HeadShakeDetected)
                {
                    label_DetectResultHint.Text = "付款取消,欢迎下次光临!";
                    _faceCamera.SetSpeakAsync("付款取消,欢迎下次光临!");
                }

                _faceCamera.FaceCmd = FaceCamera.FaceCommand.ShotOneAndFind;
            };

            this.BeginInvoke(d);
        }
        static async Task Start(IBusControl bus)
        {
            Console.WriteLine("Press 'Enter' to publish the entity created event");
            Console.WriteLine("Press any other key to exit");

            #region PublishLoop

            while (true)
            {
                var key = Console.ReadKey();
                Console.WriteLine();

                var orderReceivedId = Guid.NewGuid();
                if (key.Key == ConsoleKey.Enter)
                {
                    for (int i = 0; i < 1000; i++)
                    {
                        var faceEvent = new FaceEvent
                        {
                            ResourceURI = orderReceivedId.ToString(),
                            Entity      = new Face {
                                Id = 1
                            },
                            DeviceId = "deviceid"
                        };
                        await bus.Publish(faceEvent)
                        .ConfigureAwait(false);
                    }

                    Console.WriteLine($"Published CreateEventMessage Event with ResourceURI {orderReceivedId}.");
                }
                else
                {
                    return;
                }
                #endregion
            }
        }