Ejemplo n.º 1
0
    List <string> GetInintModelList(string db_path)
    {
        DbRepository <AcupointInfo> local_db = new DbRepository <AcupointInfo>();

        // local_db.CreateDb(AppOpera.sign_ssp_path+"StartStop.db");
        local_db.CreateDb(db_path);
        var tmpssp = local_db.Select <AcupointInfo>((mod_name) =>
        {
            if (mod_name != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        });

        List <string> sspInfoList = new List <string>();

        foreach (AcupointInfo tmp in tmpssp)
        {
            if (tmp != null)
            {
                sspInfoList.Add(tmp.sm_name);
            }
        }
        return(sspInfoList);
    }
Ejemplo n.º 2
0
    //读取贴图相关列表
    void ReadTexTable()
    {
        tex_db = new DbRepository <StartStopTex>();

        tex_db.CreateDb(db_path);

        var tmpssp = tex_db.Select <StartStopTex>((ss_id) =>
        {
            if (ss_id != null)
            {
                //DebugLog.DebugLogInfo(ss_id.bone_name+" "+ss_id.main_tex+" "+ ss_id.mask_tex);
                return(true);
            }
            else
            {
                return(false);
            }
        });

        texInfoList = new List <StartStopTex>();

        foreach (StartStopTex tmp in tmpssp)
        {
            if (tmp.bone_name != null)
            {
                texInfoList.Add(tmp);
            }
        }

        tex_db.Close();
    }
Ejemplo n.º 3
0
        public void setCache_dbPath(string r, string path, bool is_append = false)
        {
            var repository = new RemoteRepository <GetStruct>();

            repository.Get <Response <T> >(r, (response) =>
            {
                Debug.Log(JsonConvert.SerializeObject(response));
                if (response.List != null && response.List.Count != 0)
                {
                    Debug.Log("============读取数据库缓存更新,从远程拉取数据,更新版本号=================== ");
                    var db = new DbRepository <T>();
                    db.CreateDb(path);
                    if (!is_append)
                    {
                        db.DropTable();
                    }
                    db.CreateTable();
                    db.InsertAll(response.List);//更新远程数据源
                    db.Close();
                }
                else
                {
                    Debug.Log("Struct List data is null ");
                }
            });
        }
Ejemplo n.º 4
0
    public static void opera_condition(string db_path, Action <List <T> > ac)
    {
        DbRepository <T> temp_db = new DbRepository <T>();

        temp_db.CreateDb(db_path);
        temp_db.CreateTable();
        //db 原数据
        List <T> mask_name_list = new List <T>();
        var      tmpssp         = temp_db.Select <T>((ss_id) =>
        {
            if (ss_id != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        });

        foreach (var item in tmpssp)
        {
            mask_name_list.Add(item);
        }
        Debug.Log("写入mask texture 数据成功");
        temp_db.Close();
        ac(mask_name_list);
    }
Ejemplo n.º 5
0
    //创建db库
    public void openDb()
    {
        closeDb();
        errQa = new DbRepository<ErrorQa>();
        errQa.CreateDb(PublicClass.filePath+"ErrQa.db");
#if UNITY_EDITOR
        errQa.DropTable();
#endif
        errQa.CreateTable();
    }
Ejemplo n.º 6
0
    //贴图记录工具
    public static void SetTextureDataToDB(string texture_path, string db_fullname)
    {
        print("<Color=#00ff00> db路径 :" + db_fullname + " </color>");
        List <string> list = new List <string>();

        list.AddRange(Vesal_DirFiles.GetAllDirInfoFromPath(texture_path));
        print("<Color=#00ff00> 贴图列表长度 :" + list.Count + "</color>");
        DbRepository <texture_mask> temp_db = new DbRepository <texture_mask>();

        // temp_db.DataService("StartStop.db");
        temp_db.CreateDb(db_fullname);
        temp_db.CreateTable();
        //db 原数据
        List <string> mask_name_list = new List <string>();
        var           tmpssp         = temp_db.Select <texture_mask>((ss_id) =>
        {
            if (ss_id != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        });

        for (int i = 0; i < list.Count; i++)
        {
            texture_mask temp_mask = new texture_mask
            {
                id       = i + 1,
                name     = Vesal_DirFiles.get_file_name_from_full_path(list[i]),
                tex_data = File.ReadAllBytes(list[i]),// Vesal_DirFiles.Object2Bytes(new SceneModelState()),
            };
            bool has_record = false;
            foreach (texture_mask tmp in tmpssp)
            {
                if (temp_mask.name == tmp.name)
                {
                    temp_db.Update(temp_mask);
                    has_record = true;
                    print("update : " + temp_mask.name);
                }
            }
            if (has_record == false)
            {
                temp_db.Insert(temp_mask);
            }
        }

        Debug.Log("写入mask texture 数据成功");
        temp_db.Close();
    }
Ejemplo n.º 7
0
    public static void update_condition(List <T> struct_lsit, string db_path)
    {
        DbRepository <T> temp_db = new DbRepository <T>();

        temp_db.CreateDb(db_path);
        foreach (var item in struct_lsit)
        {
            temp_db.Update(item);
        }
        Debug.Log("写入mask texture 数据成功");
        temp_db.Close();
    }
Ejemplo n.º 8
0
    //从数据库中读取起止点相关信息,并将起点颜色信息,止点颜色信息提取出来
    void ReadSSPTable()
    {
        Model[] models = SceneModels.instance.Get_scope_models();
        local_db = new DbRepository <StartStopInfo>();
        local_db.CreateDb(db_path);
        var tmpssp = local_db.Select <StartStopInfo>((mod_name) =>
        {
            if (mod_name != null)
            {
                //DebugLog.DebugLogInfo(string.Format("起点({0},{1},{2}),止点({3},{4},{5})", mod_name.qr, mod_name.qg, mod_name.qb, mod_name.zr, mod_name.zg, mod_name.zb));
                return(true);
            }
            else
            {
                return(false);
            }
        });

        sspInfoList = new List <StartStopInfo>();

        foreach (StartStopInfo tmp in tmpssp)
        {
            for (int i = 0; i < models.Length; i++)
            {
                if (tmp.mod_name == models[i].name)
                {
                    sspInfoList.Add(tmp);
                }
            }
        }

        local_db.Close();
        for (int i = 0; i < sspInfoList.Count; i++)
        {
            StartStopPoint point = new StartStopPoint(sspInfoList[i]);
            sspList.Add(point);


            GameObject tempMark = Instantiate(Resources.Load <GameObject>("Prefab/SSPElement"));
            // DebugLog.DebugLogInfo("读取下方菜单预制体");
            tempMark.transform.SetParent(Parent.transform);
            tempMark.transform.localScale    = Vector3.one;
            tempMark.transform.localPosition = new Vector3(tempMark.transform.localPosition.x, tempMark.transform.localPosition.y, 1);
            // Debug.Log(tempMark);
            tempMark.GetComponent <StartStopElement>().SetData(sspInfoList[i]);
            tempMark.GetComponentInChildren <Text>().text = sspInfoList[i].ch_name;
            sspEleList.Add(tempMark.GetComponent <StartStopElement>());

            //muscleList.Add(sspInfoList[i].ch_name);
        }
    }
Ejemplo n.º 9
0
    void ReadTextureAB(string filepath)
    {
        //read db  return texture name
        DbRepository <texture_table> temp_db = new DbRepository <texture_table>();

        temp_db.CreateDb(filepath + "Sign_old.db");
        IEnumerable <texture_table> aculist = temp_db.Select <texture_table>((tmp) =>
        {
            if (tmp != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        });

        foreach (var item in aculist)
        {
            if (!name_texture_dic.ContainsKey(item.model_name))
            {
                name_texture_dic.Add(item.model_name, item.tex_name);
            }
        }
        print("name_texture_dic  list " + name_texture_dic.Count);
        temp_db.Close();

        //load ab --find texture with name --
        AssetBundle texture_bundle  = null;
        AssetBundle texture_bundle2 = null;

#if UNITY_EDITOR || UNITY_STANDALONE_WIN
        texture_bundle  = AssetBundle.LoadFromFile(filepath + "bonetex.pc");
        texture_bundle2 = AssetBundle.LoadFromFile(filepath + "hearttex.pc");
#elif UNITY_IOS
        texture_bundle = AssetBundle.LoadFromFile(filepath + "bonetex.ios");
#else
        texture_bundle = AssetBundle.LoadFromFile(filepath + "bonetex.android");
#endif
        texture_list  = texture_bundle.LoadAllAssets <Texture>();
        texture_list2 = texture_bundle2.LoadAllAssets <Texture>();
        print("texture_list count : " + texture_list.Length);

        if (texture_bundle != null)
        {
            texture_bundle.Unload(false);
            texture_bundle2.Unload(false);
        }
    }
Ejemplo n.º 10
0
    public MarkNoun getMarkNoun(string name)
    {
        db_path = PublicClass.vesal_db_path + "/vesali.db";//AppOpera.acu_path+"SignAcu.db";


        getMarkNoun_db.CreateDb(db_path);
        var tmpsssss = getMarkNoun_db.SelectOne <MarkNoun>((tmp) =>
        {
            if (tmp.mark_noun_no == name)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        });

        return(tmpsssss);
    }
Ejemplo n.º 11
0
    void ReadAcuTable()
    {
        local_db = new DbRepository <AcupointInfo>();
        local_db.CreateDb(db_path);
        var tmpssp = local_db.Select <AcupointInfo>((tmp) =>
        {
            if (tmp.sm_type != null)
            {
                //DebugLog.DebugLogInfo(ss_id.bone_name+" "+ss_id.main_tex+" "+ ss_id.mask_tex);
                return(true);
            }
            else
            {
                return(false);
            }
        });

        acuInfoList     = new List <AcupointInfo>();
        jingluoInfoList = new List <AcupointInfo>();
        foreach (AcupointInfo tmp in tmpssp)
        {
            if (tmp.sm_type == "XW")
            {
                acuInfoList.Add(tmp);
            }
            else if (tmp.sm_type == "JL")
            {
                jingluoInfoList.Add(tmp);
            }
        }
        local_db.Close();
        List <string> jingmaiList = new List <string>();

        string[] ids_array = null;
        DbRepository <AcuListInfo> temp_db = new DbRepository <AcuListInfo>();

        temp_db.CreateDb(db_path);
        IEnumerable <AcuListInfo> aculist = temp_db.Select <AcuListInfo>((tmp) =>
        {
            if (tmp != null)
            {
                return(true);
            }
            else
            {
                return(false);
            }
        });

        foreach (var item in aculist)
        {
            if (item.noun_no == PublicClass.app.app_id)
            {
                ids_array = item.ids.Split(',');
                string[] temp_str = item.line_list.Split(',');
                for (int i = 0; i < temp_str.Length; i++)
                {
                    jingmaiList.Add(temp_str[i]);
                }
                break;
            }
        }
        print("jingmai  list " + jingmaiList.Count);

        temp_db.Close();
        acuPosList = new List <Transform>();

        SetSecondchildActived(PublicClass.Transform_temp, jingmaiList);

        List <string> jingmai_name_list = new List <string>();

        for (int i = 0; i < jingmaiList.Count; i++)
        {
            Transform tmp_trans  = GameObject.Find(jingmaiList[i]).transform;
            int[]     temp_trans = new int[tmp_trans.childCount];
            for (int j = 0; j < temp_trans.Length; j++)
            {
                jingmai_name_list.Add(tmp_trans.GetChild(j).name);
            }
        }

        for (int i = 0; i < acuInfoList.Count; i++)
        {
            if (jingmai_name_list.Contains(acuInfoList[i].sm_name))
            {
                //读取小球位置生成小球
                Transform tran = GameObject.Find(acuInfoList[i].sm_name).transform;
                acuPosList.Add(tran);
                GameObject gobj = Instantiate(sphere, tran);
                gobj.transform.localPosition = Vector3.zero;
                gobj.transform.localScale    = gobj.transform.localScale * 0.35f;
                gobj.GetComponent <SphereCollider>().radius = 0.7f;
                acpoint_dic.Add(tran.position, acuInfoList[i].sm_ch_name);

                //读取下方菜单预制体生成菜单
                GameObject tempMark = Instantiate(Resources.Load <GameObject>("Prefab/ACUElement"));
                // DebugLog.DebugLogInfo("读取下方菜单预制体");
                tempMark.transform.SetParent(acuParent.transform);
                tempMark.transform.localScale    = Vector3.one;
                tempMark.transform.localPosition = new Vector3(tempMark.transform.localPosition.x, tempMark.transform.localPosition.y, 1);
                Debug.Log(tempMark);
                tempMark.GetComponent <AcuElement>().SetData(acuInfoList[i]);

                tempMark.GetComponentInChildren <Text>().text = acuInfoList[i].sm_ch_name;
                acuEleList.Add(tempMark.GetComponent <AcuElement>());
            }
        }

        for (int j = 0; j < jingluoInfoList.Count; j++)
        {
            GameObject tempMark = Instantiate(Resources.Load <GameObject>("Prefab/MerElement"));
            // DebugLog.DebugLogInfo("读取下方菜单预制体");
            tempMark.transform.SetParent(merParent.transform);
            tempMark.transform.localScale    = Vector3.one;
            tempMark.transform.localPosition = new Vector3(tempMark.transform.localPosition.x, tempMark.transform.localPosition.y, 1);
            Debug.Log(tempMark);
            tempMark.GetComponent <MerElement>().SetData(jingluoInfoList[j]);

            tempMark.GetComponentInChildren <Text>().text = jingluoInfoList[j].sm_ch_name;
            merEleList.Add(tempMark.GetComponent <MerElement>());
        }
        Debug.Log(merEleList.Count);
    }
Ejemplo n.º 12
0
    // Update is called once per frame
    void Update()
    {
        if (PublicClass.app.app_type != "sign_acu")
        {
            return;
        }

#if UNITY_DEBUG
        if (Input.GetKeyDown(KeyCode.T))
        {
            MakeStaticDBTable <AcupointInfo> .SetTextureDataToDB(PublicClass.filePath + "StartStop", db_path);
        }


        if (Input.GetKeyDown(KeyCode.F1))
        {
            //http://118.24.119.234:8083/vesal-jiepao-test/v1/app/xml/getTempAcupoint
            // MakeStaticDBTable<AcupointInfo>.sign_UpdateTable(PublicClass.server_ip + "v1/app/xml/getTempAcupoint", db_path);
// http://118.24.119.234:8083/vesal-jiepao-test/v1/app/xml/getTempAcupoint?type=acu
// http://118.24.119.234:8083/vesal-jiepao-test/v1/app/xml/getTempAcupoint?type=noun
            // MakeStaticDBTable<AcupointInfo>.sign_UpdateTable(PublicClass.server_ip + "v1/app/xml/getTempAcupoint?type=acu", db_path,true);
            // MakeStaticDBTable<AcuListInfo>.sign_UpdateTable(PublicClass.server_ip + "v1/app/xml/getTempAcupoint?type=noun", db_path,true);

            string db_path = PublicClass.filePath + "sign_ssp_path/StartStop_1.db";
            MakeStaticDBTable <StartStopInfo> .opera_condition(db_path, (list) => {
                //list startstopinfo
                List <string> opera_list = new List <string>();
                foreach (var item in list)
                {
                    if (item.qr == "0")
                    {
                        opera_list.Add(item.mod_name);
                        print(item.mod_name + " info missing ");
                    }
                }
            });
        }


        if (Input.GetKeyDown(KeyCode.R))
        {
            Debug.Log("r已被按下");
            for (int i = 0; i < acuEleList.Count; i++)
            {
                Debug.Log("进入循环,查找目前记录的物体");
                if (acuEleList[i].gameObject.GetComponent <Image>().color == new Color(33 / 255.0f, 167 / 255.0f, 212 / 255.0f, 85 / 255.0f))
                {
                    camera_params str = new camera_params();
                    str.camera_pos   = new vector3();
                    str.camera_pos.x = Camera.main.transform.position.x;
                    str.camera_pos.y = Camera.main.transform.position.y;
                    str.camera_pos.z = Camera.main.transform.position.z;

                    str.camera_parent_rot   = new vector3();
                    str.camera_parent_rot.x = Camera.main.transform.parent.transform.eulerAngles.x;
                    str.camera_parent_rot.y = Camera.main.transform.parent.transform.eulerAngles.y;
                    str.camera_parent_rot.z = Camera.main.transform.parent.transform.eulerAngles.z;

                    str.camera_parent_pos   = new vector3();
                    str.camera_parent_pos.x = Camera.main.transform.parent.transform.position.x;
                    str.camera_parent_pos.y = Camera.main.transform.parent.transform.position.y;
                    str.camera_parent_pos.z = Camera.main.transform.parent.transform.position.z;

                    acuInfoList[i].camera_params = JsonConvert.SerializeObject(str);
                    // sspInfoList[i].app_id="SA0C01001";
                    Debug.Log("记录摄像机数据成功");
                }
            }
        }

        if (Input.GetKeyDown(KeyCode.W))
        {
            // local_db.DataService("StartStop.db");
            local_db.CreateDb(db_path);
            UpdateSSPTable();
            Debug.Log("写入摄像机数据成功");
            local_db.Close();
        }
#endif


        //将显示框的位置设置为物体位置的屏幕坐标
        //Debug.Log(objPos);
        //showinfoBG.transform.position = Camera.main.WorldToScreenPoint(objPos);
        txtPos = Camera.main.WorldToScreenPoint(objPos);

        showinfoBG.rectTransform.anchoredPosition = new Vector2(txtPos.x / Screen.width * ScreenData.instance.high, txtPos.y / Screen.height * ScreenData.instance.width) + new Vector2(100, 50);
        //Debug.Log(showinfoBG.rectTransform.localPosition);
        // Debug.Log(showinfoBG.rectTransform.anchoredPosition);

        //Debug.Log(txtPos);
        //showinfoBG.rectTransform.pivot = new Vector2(0.5f, 0.5f);

        //Debug.Log(showinfoBG.transform.position);
        if (ChooseModel.CheckGuiRaycastObjects())
        {
            return;
        }
        if (Input.GetMouseButtonDown(0))
        {
            Ray        ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            RaycastHit hit;
            if (Physics.Raycast(ray, out hit))
            {
                if (acpoint_dic.ContainsKey(hit.transform.position))
                {
                    ExpPanel.SetActive(true);
                    MenuPanel.SetActive(false);
                    isListOpen = false;

                    //for (int i = 0; i < acuInfoList.Count; i++)
                    //               {
                    //                   if(GameObject.Find(acuInfoList[i].sm_name)!=null)
                    //                   ToNormalState(GameObject.Find(acuInfoList[i].sm_name).GetComponentInChildren<MeshRenderer>().material);


                    //               }
                    if (lastSphere != null)
                    {
                        ToNormalState(lastSphere.GetComponentInChildren <MeshRenderer>().material);
                        //test.lastMuscle.SetActive(false);
                    }

                    //lastTrans = currentTrans;
                    //currentTrans = hit.transform;
                    objPos = hit.transform.position;
                    showinfoBG.gameObject.SetActive(true);
                    showTxt.text = acpoint_dic[hit.transform.position];
                    //ToSelectState(currentTrans.GetComponent<MeshRenderer>().material);
                    currentSphere = hit.transform.gameObject;
                    ToSelectState(hit.transform.GetComponent <MeshRenderer>().material);
                    lastSphere = currentSphere;

                    //if(lastTrans!=null)
                    //ToNormalState (lastTrans.GetComponent<MeshRenderer>().material);
                    for (int i = 0; i < acuInfoList.Count; i++)
                    {
                        if (acuInfoList[i].sm_ch_name == acpoint_dic[hit.transform.position])
                        {
                            //print(acuInfoList[i].sm_ch_name);
                            acuChName.text = acuInfoList[i].sm_ch_name;

                            acuCode.text = acuInfoList[i].iso_code;
                            acuDes.text  = string.Format("<size=48><color=#00FFFF>定位</color></size>:\r\n{0}\r\n<size=48><color=#00FFFF>主治</color></size>:\r\n{1}\r\n<size=48><color=#00FFFF>操作</color></size>:\r\n{2}", acuInfoList[i].position, acuInfoList[i].cure, acuInfoList[i].handle);
                        }
                    }
                }
            }
            else
            {
                for (int i = 0; i < acuInfoList.Count; i++)
                {
                    if (GameObject.Find(acuInfoList[i].sm_name) != null)
                    {
                        ToNormalState(GameObject.Find(acuInfoList[i].sm_name).GetComponentInChildren <MeshRenderer>().material);
                    }
                }
                showinfoBG.gameObject.SetActive(false);
            }
        }
    }
Ejemplo n.º 13
0
 public void Should_CreateDbAndSchema_IfNotExist()
 {
     _dbRepository.CreateDb();
 }
Ejemplo n.º 14
0
    void Update()
    {
        if (PublicClass.app.app_type != "sign_ssp")
        {
            return;
        }


        if (Input.GetKeyDown(KeyCode.T))
        {
            MakeStaticDBTable <StartStopInfo> .SetTextureDataToDB(PublicClass.filePath + "StartStop", db_path);
        }
#if UNITY_DEBUG
        if (Input.GetKeyDown(KeyCode.F1))
        {
            MakeStaticDBTable <StartStopInfo> .sign_UpdateTable(PublicClass.server_ip + "v1/app/xml/getAllStartStop", db_path, true);
        }


        if (Input.GetKeyDown(KeyCode.R))
        {
            Debug.Log("r已被按下");
            for (int i = 0; i < sspEleList.Count; i++)
            {
                Debug.Log("进入循环,查找目前记录的物体");
                if (sspEleList[i].gameObject.GetComponent <Image>().color == new Color(33 / 255.0f, 167 / 255.0f, 212 / 255.0f, 85 / 255.0f))
                {
                    camera_params str = new camera_params();
                    str.camera_pos   = new vector3();
                    str.camera_pos.x = Camera.main.transform.position.x;
                    str.camera_pos.y = Camera.main.transform.position.y;
                    str.camera_pos.z = Camera.main.transform.position.z;

                    str.camera_parent_rot   = new vector3();
                    str.camera_parent_rot.x = Camera.main.transform.parent.transform.eulerAngles.x;
                    str.camera_parent_rot.y = Camera.main.transform.parent.transform.eulerAngles.y;
                    str.camera_parent_rot.z = Camera.main.transform.parent.transform.eulerAngles.z;

                    str.camera_parent_pos        = new vector3();
                    str.camera_parent_pos.x      = Camera.main.transform.parent.transform.position.x;
                    str.camera_parent_pos.y      = Camera.main.transform.parent.transform.position.y;
                    str.camera_parent_pos.z      = Camera.main.transform.parent.transform.position.z;
                    sspInfoList[i].camera_params = JsonConvert.SerializeObject(str);
                    // sspInfoList[i].app_id="SA0C01001";
                    Debug.Log("记录摄像机数据成功");
                }
            }
        }

        if (Input.GetKeyDown(KeyCode.W))
        {
            // local_db.DataService("StartStop.db");
            local_db.CreateDb(db_path);
            UpdateSSPTable();
            Debug.Log("写入摄像机数据成功");
            local_db.Close();
        }
#endif

        if (ChooseModel.CheckGuiRaycastObjects())
        {
            return;
        }

        if (Input.GetMouseButtonDown(0))
        {
            List <Ray>        ray_list = new List <Ray>();
            List <RaycastHit> hit_list = new List <RaycastHit>();

            Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
            ray_list.Add(ray);
            Ray ray1 = Camera.main.ScreenPointToRay(Input.mousePosition + new Vector3(0, 2, 0));
            ray_list.Add(ray1);
            Ray ray2 = Camera.main.ScreenPointToRay(Input.mousePosition + new Vector3(0, -2, 0));
            ray_list.Add(ray2);
            Ray ray3 = Camera.main.ScreenPointToRay(Input.mousePosition + new Vector3(2, 0, 0));
            ray_list.Add(ray3);
            Ray ray4 = Camera.main.ScreenPointToRay(Input.mousePosition + new Vector3(-2, 0, 0));
            ray_list.Add(ray4);



            for (int k = 0; k < ray_list.Count; k++)
            {
                RaycastHit hit;

                if (Physics.Raycast(ray_list[k], out hit))
                {
                    hit_list.Add(hit);
                    //for (int i = 0; i < sspInfoList.Count; i++)
                    //{

                    //dic[sspInfoList[i].mod_name].gameObject.SetActive(false);

                    //}

                    if (model_maskTex_dic.ContainsKey(hit.transform.gameObject.GetComponent <Model>()))
                    {
                        maskTexPNG = model_maskTex_dic[hit.transform.gameObject.GetComponent <Model>()];
                    }
                    Vector2 pixelUV = hit.textureCoord2;

                    pixelUV.x *= maskTexPNG.width;
                    pixelUV.y *= maskTexPNG.height;
                    chosCol    = maskTexPNG.GetPixel((int)pixelUV.x, (int)pixelUV.y);

                    if (chosCol == Color.black)
                    {
                        continue;
                    }

                    clickTimes++;
                    for (int i = 0; i < sspList.Count; i++)
                    {
                        ExpPanel.SetActive(true);
                        MenuPanel.SetActive(false);
                        isListOpen = false;

                        if (sspList[i].startCol == new Vector3(chosCol.r, chosCol.g, chosCol.b))
                        {
                            ShowInfo(sspInfoList[i]);

                            objPa.BroadcastMessage("ChangeChoseColor", chosCol);
                            if (new Color(sspList[i].stopCol.x, sspList[i].stopCol.y, sspList[i].stopCol.z, 1) != Color.black)
                            {
                                objPa.BroadcastMessage("ChangeResColor", new Color(sspList[i].stopCol.x, sspList[i].stopCol.y, sspList[i].stopCol.z, 1));
                            }
                            else
                            {
                                objPa.BroadcastMessage("ChangeResColor", Color.magenta);
                            }

                            ShowMuscle(sspInfoList[i]);
                            return;
                        }
                        else if (sspList[i].stopCol == new Vector3(chosCol.r, chosCol.g, chosCol.b))
                        {
                            ShowInfo(sspInfoList[i]);

                            objPa.BroadcastMessage("ChangeResColor", chosCol);
                            if (new Color(sspList[i].startCol.x, sspList[i].startCol.y, sspList[i].startCol.z, 1) != Color.black)
                            {
                                objPa.BroadcastMessage("ChangeChoseColor", new Color(sspList[i].startCol.x, sspList[i].startCol.y, sspList[i].startCol.z, 1));
                            }
                            else
                            {
                                objPa.BroadcastMessage("ChangeChoseColor", Color.magenta);
                            }

                            ShowMuscle(sspInfoList[i]);
                            return;
                        }
                    }
                }
                else
                {
                    ExpPanel.SetActive(false);
                    MenuPanel.SetActive(false);
                }
            }
        }
    }