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++; } } } }
public void SetData(FaceEvent faceEvent) { var faceData = faceEvent.FaceData; var eventType = faceEvent.EventType; m_FaceData = faceData; m_EventType = eventType; name = $"{eventType} Face {faceData.ID}"; }
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; } }
protected void onFaceHandler(FaceEvent e) { switch (e.type) { case FaceEvent.EventType.FaceCollected: onFaceCollectedHandler(e); break; default: break; } }
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); }
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); } } } } }
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); }
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; } }
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); }
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); }
/// <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); }
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 } }