/// <summary> /// 保存新创建的客流区域 /// </summary> public void _AddPassnegerFlowArea(string points, GameObject area) { PassengerFlowAreaInfo info = new PassengerFlowAreaInfo(); int i = 1; while (PassnegerFlowAreaNameList.Contains("新建客流统计区域" + i)) { i++; } info.Name = "新建客流统计区域" + i; info.CameraIdLst = ""; PassengerFlowAreaDao pfaDao = new PassengerFlowAreaDao(); Logger.Instance.WriteLog("保存新建客流统计区域信息"); pfaDao.Insert001(info.Name, info.CameraIdLst, points); Logger.Instance.WriteLog("检索最新的客流统计区域信息"); pfaDao.Select002(); if (pfaDao.Result.Count <= 0 || pfaDao.Result[0].Name != info.Name) { return; } info = pfaDao.Result[0]; PassengerFlowAreaInfos.Add(info); PassnegerFlowAreaNameList.Add(info.Name); GameObject go = Instantiate(PassengerFlowAreaPrefab) as GameObject; PassengerFlowAreaLst.AddChild(go.transform); go.transform.localScale = new Vector3(1, 1, 1); go.GetComponent <PassengerFlowAreaListItem>().PassengerFlowAreaUIRoot = PassengerFlowAreaUIRoot; go.GetComponent <PassengerFlowAreaListItem>().SetValue(info, this, area, DeviceListPanel, WarnLevelPanel, Instantiate(PassengerFlowAreaUIPrefab) as GameObject); }
/// <summary> /// 删除选定的客流统计区域 /// </summary> public void DeletePassnegerFlowArea() { Logger.Instance.WriteLog("删除选定的客流统计区域"); if (Configure.IsOperating) { Logger.Instance.WriteLog("正在执行其它操作"); return; } if (SelectedItem == null) { return; } if (PassengerFlowAreaInfos.Count <= 0) { return; } string AreaName = SelectedItem.GetComponentInChildren <UIInput>().value; int AreafosIndex = FindPassengerFlowAreaInfoIndex(AreaName); PassengerFlowAreaInfo info = PassengerFlowAreaInfos[AreafosIndex]; PassengerFlowAreaDao pfaDao = new PassengerFlowAreaDao(); pfaDao.Delete001(info.Id); PassengerFlowAreaInfos.RemoveAt(AreafosIndex); PassnegerFlowAreaNameList.Remove(AreaName); PassengerFlowAreaLst.RemoveChild(SelectedItem.transform); Destroy(SelectedItem); SelectedItem = null; //更新列表 PassengerFlowAreaLst.GetComponent <UIWidget>().enabled = false; PassengerFlowAreaLst.GetComponent <UIWidget>().enabled = true; }
/// <summary> /// 更新区域报警级别阈值信息 /// </summary> public void UpdateWarnLevel() { Logger.Instance.WriteLog("更新客流统计区域报警级别阈值信息"); PassengerFlowAreaDao pfaDao = new PassengerFlowAreaDao(); pfaDao.Update004(info.WarnLevel1, info.WarnLevel2, info.WarnLevel3, info.Id); }
/// <summary> /// 当区域名称改变时调用,用来判断名称是否合法 /// </summary> public void OnNameChanged() { Logger.Instance.WriteLog("调用客流统计区域名称变更"); if (InputName.value == info.Name) { return; } if (info.Name == "主客流") { InputName.value = info.Name; return; } int index = PFAMagage.FindPassengerFlowAreaInfoIndex(InputName.value); if (index < 0) { Logger.Instance.WriteLog("保存变更后客流统计区域名称"); PassengerFlowAreaDao pfaDao = new PassengerFlowAreaDao(); pfaDao.Update002(InputName.value, info.Id); PFAMagage.UpdateAreaName(info.Name, InputName.value); info.Name = InputName.value; PassengerFlowAreaUI.GetComponent <PassengerAreaUI>().name.text = info.Name; return; } else { InputName.value = info.Name; WarnWindow.Instance.Show(WarnWindow.WarnType.SameName); } Logger.Instance.WriteLog("调用客流统计区域名称变更失败"); }
/// <summary> /// 更新绑定的设备信息 /// </summary> /// <param name="idList">Identifier list.</param> public void UpdateDeviceIdLst(string idList) { Logger.Instance.WriteLog("更新客流统计区域绑定的设备信息"); info.CameraIdLst = idList; PassengerFlowAreaDao pfaDao = new PassengerFlowAreaDao(); pfaDao.Update003(info.CameraIdLst, info.Id); PassengerFlowAreaUI.GetComponent <EditedPassengerFlowInfoShow>().Init(info); }
/// <summary> /// 当程序退出时,将客流统计数据存入数据库 /// </summary> void OnApplicationQuit() { Logger.Instance.WriteLog("将客流统计数据存入数据库"); //定义一个 PassengerFlowAreaDao类的变量 PassengerFlowAreaDao pfaDao = new PassengerFlowAreaDao(); //定义一个PassengerFlowData类的变量 PassengerFlowData pfData; //遍历DicPassengerFlowData.Keys中的键 foreach (var key in DicPassengerFlowData.Keys) { //用来选择人流...? pfData = DicPassengerFlowData[key]; pfaDao.Insert002(DateTime.Now.ToString("yyyyMMddHHmmss"), key, pfData.SumCount.ToString(), pfData.EnterCount.ToString(), pfData.ExitCount.ToString()); } }
/// <summary> /// 从数据库加载巡逻方案的数据 /// </summary> /// <returns>The video patrol plan record.</returns> IEnumerator LoadPassnegerFlowAreaRecord() { yield return(new WaitForEndOfFrame()); Logger.Instance.WriteLog("从数据库加载巡逻方案的数据"); PassengerFlowAreaLst.gameObject.GetComponent <UIWidget>().UpdateAnchors(); PassengerFlowAreaDao pfaDao = new PassengerFlowAreaDao(); pfaDao.Select001(); PassengerFlowAreaInfos = pfaDao.Result; PassnegerFlowAreaNameList.Clear(); foreach (PassengerFlowAreaInfo info in PassengerFlowAreaInfos) { Logger.Instance.WriteLog("创建客流统计区域列表项目"); PassnegerFlowAreaNameList.Add(info.Name); GameObject go = Instantiate(PassengerFlowAreaPrefab) as GameObject; PassengerFlowAreaLst.AddChild(go.transform); go.transform.localScale = new Vector3(1, 1, 1); go.GetComponent <PassengerFlowAreaListItem>().PassengerFlowAreaUIRoot = PassengerFlowAreaUIRoot; go.GetComponent <PassengerFlowAreaListItem>().SetValue(info, this, DeviceListPanel, WarnLevelPanel, Instantiate(PassengerFlowAreaUIPrefab) as GameObject); } yield return(null); }
public void AreaModify(GameObject go, string points) { Logger.Instance.WriteLog("修改客流统计区域"); if (area != null) { Destroy(area); } PFAMagage.FinishedUpdatePassengerFlowArea(); IsDrawingArea = false; ULScope.text = "绘制"; ULScope.color = Color.white; Configure.IsOperating = false; area = go; Logger.Instance.WriteLog("更新客流统计区域信息"); PassengerFlowAreaDao pfaDao = new PassengerFlowAreaDao(); pfaDao.Update001(points, info.Id); info.Points = points; string[] point = points.Split('|'); Vector3[] pts = new Vector3[point.Length / 3]; Vector3 vec = Vector3.zero; for (int i = 0; i < pts.Length; i++) { pts[i] = new Vector3(float.Parse(point[i * 3]), float.Parse(point[i * 3 + 1]), float.Parse(point[i * 3 + 2])); vec += pts[i]; } vec /= pts.Length; centerPos = vec; if (area && PassengerFlowAreaUI) { Logger.Instance.WriteLog("绑定客流统计信息显示面板"); PassengerFlowAreaUI.SetActive(true); PassengerFlowAreaUI.GetComponent <PassengerAreaUI>().Bind(centerPos, info.Name); } }
/// <summary> /// 加载客流统计区域,及加载当天最新统计信息, /// 画客流统计区域 /// </summary> /// <returns>The passenger flow area.</returns> IEnumerator LoadPassengerFlowArea() { Logger.Instance.WriteLog("加载客流统计区域,及加载当天最新统计信息"); Logger.Instance.WriteLog("加载客流统计区域"); //实例化一个PassengerFlowAreaDao类 PassengerFlowAreaDao pfaDao = new PassengerFlowAreaDao(); //调用PassengerFlowAreaDao中的Select001函数 pfaDao.Select001(); //将pfa.Result中的结构体赋值给infoLst infoLst = pfaDao.Result; //遍历infoLst集合 foreach (var info in infoLst) { //如果PassengerFlowAreaInfo中的Name为主客流 if (info.Name == "主客流") { //定义一个对象 GameObject g = new GameObject(); //将这个对象的位置初始化为原点 g.transform.position = Vector3.zero; //给这个对象上挂PassengerFlowInfoDetail脚本,并用p来接收这个脚本 PassengerFlowInfoDetail p = g.AddComponent <PassengerFlowInfoDetail>(); //给这四个材质变量赋初值 p.mat_red = mat_red; p.mat_green = mat_green; p.mat_yellow = mat_yellow; p.mat_orange = mat_orange; //得到人流控制面板UI p.PFInfoUI = PassengerInfo.GetComponent <PassengerFlowInfoUI>(); //初始化对象p结构体PassengerFlowAreaInfo的信息 p.Init(info, null); PFArea += p.UpdateData; continue; } //定义一个string类型的数组,并用"|"分割 string[] point = info.Points.Split('|'); //定义一个V3类型及的数组,长度为...? Vector3[] pts = new Vector3[point.Length / 3]; //定义一个V3类型的变量,并初始化为原点 Vector3 vec = Vector3.zero; //遍历客流统计区域顶点的集合 for (int i = 0; i < pts.Length; i++) { pts[i] = new Vector3(float.Parse(point[i * 3]), float.Parse(point[i * 3 + 1]), float.Parse(point[i * 3 + 2])); vec += pts[i]; } vec /= pts.Length; int[] triangles = new int[pts.Length]; for (int i = 0; i < triangles.Length; i++) { triangles[i] = i; } //定义一个对象 GameObject go = new GameObject(); //给这个对象设置层级 go.layer = LayerMask.NameToLayer("PassengerFlowArea"); //给go对象添加MeshRender组件 MeshRenderer meshrend = go.AddComponent <MeshRenderer>(); //meshrend.material.shader = Shader.Find("Particles/Alpha Blended"); //meshrend.material.SetColor("_TintColor",new Color(0,1,0,0.2f)); //给go对象赋值绿色材质 meshrend.material = mat_green; //给go对象添加MeshFilter组件 MeshFilter meshFilter = go.AddComponent <MeshFilter>(); //给网格定点赋上pts三角形面片 meshFilter.mesh.vertices = pts; //网格角度为triangles meshFilter.mesh.triangles = triangles; //重新计算网格的发现 meshFilter.mesh.RecalculateNormals(); //给go对象添加meshCollider组件 MeshCollider mc = go.AddComponent <MeshCollider>(); //将meshFilter的mesh赋值给MeshCollider的sharedMesh,作为共享网格 mc.sharedMesh = meshFilter.mesh; //给go对象重新赋值一个坐标 go.transform.position = new Vector3(0, 0.2f, 0); GameObject infoUI = Instantiate(PassengerFlowInfoShow) as GameObject; infoUI.transform.SetParent(PassengerFlowInfoShowParent); infoUI.transform.localScale = Vector3.one; infoUI.GetComponent <PassengerAreaUI>().Bind(vec, info.Name); //GameObject go = Instantiate(PassengerFlowAreaPrefab) as GameObject; PassengerFlowInfoDetail pfid = go.AddComponent <PassengerFlowInfoDetail>(); pfid.mat_red = mat_red; pfid.mat_green = mat_green; pfid.mat_yellow = mat_yellow; pfid.mat_orange = mat_orange; pfid.Init(info, infoUI.GetComponent <PassengerAreaUI>()); PFArea += pfid.UpdateData; } //从数据库加载当天最新的客流统计信息 Logger.Instance.WriteLog("从数据库加载当天最新的客流统计信息"); List <PassengerFlowInfoLog> InfoLogLst = pfaDao.Select003(DateTime.Now.ToString("yyyyMMdd") + "000000"); PassengerFlowData _pfData = new PassengerFlowData(); foreach (var logInfo in InfoLogLst) { _pfData.SumCount = int.Parse(logInfo.SumCount); _pfData.EnterCount = int.Parse(logInfo.EnterCount); _pfData.ExitCount = int.Parse(logInfo.ExitCount); DicPassengerFlowData[logInfo.PassengerFlowUrl] = _pfData; } if (PFArea != null) { PFArea.Invoke(DicPassengerFlowData); } yield return(infoLst); }