Beispiel #1
0
    /// <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);
    }
Beispiel #2
0
    /// <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;
    }
Beispiel #3
0
    /// <summary>
    /// 更新区域报警级别阈值信息
    /// </summary>
    public void UpdateWarnLevel()
    {
        Logger.Instance.WriteLog("更新客流统计区域报警级别阈值信息");
        PassengerFlowAreaDao pfaDao = new PassengerFlowAreaDao();

        pfaDao.Update004(info.WarnLevel1, info.WarnLevel2, info.WarnLevel3, info.Id);
    }
Beispiel #4
0
    /// <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("调用客流统计区域名称变更失败");
    }
Beispiel #5
0
    /// <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);
    }
Beispiel #6
0
    /// <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());
        }
    }
Beispiel #7
0
    /// <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);
    }
Beispiel #8
0
    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);
        }
    }
Beispiel #9
0
    /// <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);
    }