public IActionResult Get(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(new JsonResult("error")
                {
                    StatusCode = 302
                });
            }
            string[]      ids             = id.Split('-');
            int           modelid         = int.Parse(ids[0]);
            int           modelTexttureid = 0;
            JObject       jsonobj;
            List <string> modelName = ModelListUtils.GetNameByID(APISetting.Instance.ModelList, modelid);
            string        name      = string.Empty;

            try
            {
                if (int.TryParse(ids[1], out int tmpid))
                {
                    modelTexttureid = tmpid;
                }
                if (modelName.Count > 1)
                {
                    name    = modelTexttureid > 0 ? modelName[modelTexttureid - 1] : modelName[0];
                    jsonobj = FileUtils.DeserializeObjectByFile <JObject>($"{APISetting.Instance.WebrootPath}model/{name}/index.json");
                }
                else
                {
                    name    = modelName[0];
                    jsonobj = FileUtils.DeserializeObjectByFile <JObject>($"{APISetting.Instance.WebrootPath}model/{name}/index.json");
                    if (modelTexttureid > 0)
                    {
                        JArray modelTexttureName = TexttureUtils.GetTextureName(name, modelTexttureid);
                        if (modelTexttureName != null)
                        {
                            jsonobj["textures"] = modelTexttureName;
                        }
                    }
                }
                //textures 路径
                for (int idx = 0; idx < jsonobj["textures"].Count(); ++idx)
                {
                    jsonobj["textures"][idx] = $"{APISetting.Instance.WebrootPath}model/{name}/{jsonobj["textures"][idx]}";
                }

                jsonobj["model"] = $"{APISetting.Instance.WebrootPath}model/{name}/{jsonobj["model"]}";
                if (jsonobj["pose"] != null)
                {
                    jsonobj["pose"] = $"{APISetting.Instance.WebrootPath}model/{name}/{jsonobj["pose"]}";
                }
                if (jsonobj["physics"] != null)
                {
                    jsonobj["physics"] = $"{APISetting.Instance.WebrootPath}model/{name}/{jsonobj["physics"]}";
                }
                if (jsonobj["motions"] != null)
                {
                    foreach (var idx in jsonobj["motions"])
                    {
                        foreach (var v1 in idx)
                        {
                            string v1path = v1.Path.Split('.')[v1.Path.Split('.').Length - 1];
                            for (int v2 = 0; v2 < v1.Count(); ++v2)
                            {
                                foreach (var v3 in jsonobj["motions"][v1path][v2])
                                {
                                    string v3path = v3.Path.Split('.')[v3.Path.Split('.').Length - 1];
                                    if (string.Compare("file", v3path) == 0 || string.Compare("sound", v3path) == 0)
                                    {
                                        jsonobj["motions"][v1path][v2][v3path] = $"{APISetting.Instance.WebrootPath}model/{name}/{jsonobj["motions"][v1path][v2][v3path]}";
                                    }
                                }
                            }
                        }
                    }
                    //for(int idx = 0; idx < jsonobj["motions"].Count(); ++idx)
                    //{
                    //    for (int w = 0; w < jsonobj["motions"][idx]?.Count(); ++idx)
                    //    {
                    //        jsonobj["motions"][idx][w] = $"{APISetting.Instance.WebrootPath}model/{name}/${jsonobj["motions"][idx][w]}";
                    //    }
                    //}
                }
                if (jsonobj["expressions"] != null)
                {
                    for (int idx = 0; idx < jsonobj["expressions"].Count(); ++idx)
                    {
                        jsonobj["expressions"][idx] = $"{APISetting.Instance.WebrootPath}model/{name}/{jsonobj["expressions"][idx]}";
                    }
                }
            }
            catch (Exception ex)
            {
                return(new JsonResult("error")
                {
                    StatusCode = 500
                });
            }
            //Response.ContentType = "application/json;charset=utf-8";
            //Response.Headers.Add("access-control-allow-orgin", "*");
            //tmpret = Encoding.UTF8.GetString(Encoding.UTF8.GetBytes(tmpret));
            return(new JsonResult(jsonobj, new JsonSerializerSettings()
            {
                StringEscapeHandling = StringEscapeHandling.EscapeNonAscii, Formatting = Formatting.None
            }));
            //return new JsonResult(jsonobj);
            // new JsonResult(HtmlEncoder.Create().Encode(tmpret));// new JsonResult(tmpret) { StatusCode = 200};
        }
예제 #2
0
 public APISetting()
 {
     ModelList   = ModelListUtils.GetModelList();
     WebrootPath = AppContext.BaseDirectory;
 }
        public IActionResult SwitchTexture(string id)
        {
            if (string.IsNullOrEmpty(id))
            {
                return(new JsonResult("error")
                {
                    StatusCode = 302
                });
            }
            string[]      ids             = id.Split('-');
            int           modelid         = 0;
            int           modelTexttureid = 0;
            int           modelnewid      = 0;
            JObject       textturelist    = new JObject();
            List <string> modelName       = new List <string>();

            try
            {
                modelid         = int.Parse(ids[0]);
                modelTexttureid = int.Parse(ids[1]);
                modelName       = ModelListUtils.GetNameByID(APISetting.Instance.ModelList, modelid);
                if (modelName.Count > 1)
                {
                    textturelist["textures"] = JArray.FromObject(modelName);
                }
                else
                {
                    textturelist = TexttureUtils.GetList(modelName[0]);
                }

                if (textturelist != null)
                {
                    if (textturelist["textures"].Count() <= 1)
                    {
                        modelnewid = 1;
                    }
                    else
                    {
                        modelnewid = modelTexttureid;
                        while (modelnewid == modelTexttureid)
                        {
                            Random rd = new Random();
                            modelnewid = rd.Next(0, textturelist["textures"].Count() - 1) + 1;
                        }
                    }
                }
                else
                {
                    return(new JsonResult("error")
                    {
                        StatusCode = 302
                    });
                }
            }
            catch (Exception ex)
            { }
            JObject jobj = new JObject();

            jobj["textures"]          = new JObject();
            jobj["textures"]["id"]    = modelnewid;
            jobj["textures"]["name"]  = textturelist["textures"][modelnewid - 1];
            jobj["textures"]["model"] = modelName.Count > 1 ? modelName[modelnewid - 1] : modelName[0];
            return(new JsonResult(jobj, new JsonSerializerSettings()
            {
                StringEscapeHandling = StringEscapeHandling.EscapeNonAscii, Formatting = Formatting.None
            }));
        }