// Use this for initialization PosEntry entryFromLine(string line) { Regex CSVParser = new Regex(",(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))"); string[] X = CSVParser.Split(line); PosEntry ret = new PosEntry(); ret.time = float.Parse(X[1]); ret.pos = new Vector3(float.Parse(X[2]), float.Parse(X[3]), float.Parse(X[4])); ret.id = int.Parse(X[5]); ret.meshnum = int.Parse(X[6]); return(ret); }
static void AddEntry(string word, string data) { var list = new List <PosEntry>(); foreach (string item in data.Split(new char[] { ';' })) { string[] parts = item.Split(new char[] { '=' }); var entry = new PosEntry(); entry.pos = parts[0]; float.TryParse(parts[1], out entry.frequency); list.Add(entry); } dictionary[word] = list; }
public void SubmitMap(string schemeName, string boardName, int floor, int board) { var posMapBlock = GetPosMapBlock(schemeName); var entry = new PosEntry() { BoardName = boardName, FloorNum = floor, BoardNum = board, }; var id = posMapBlock.PosList.FindIndex(x => x.BoardName == boardName); if (id < 0) { posMapBlock.PosList.Add(entry); } else { posMapBlock.PosList[id] = entry; } var content = PosMapBlockSerialize.Serialize(posMapBlock); _dbService.UpdateMapScheme(schemeName, content); }
void Start() { MultimeshObject output = new MultimeshObject(); output.meshes = new List <Meshobject>(); //string meshPath="Assets/csmesh800/cmesh800_"; string fs = csvFile.text; string[] fLines = Regex.Split(fs, "\n|\r|\r\n"); int cnt = 0; int curMesh = -1; int curId = -1; List <Vector3> verts = new List <Vector3>(); List <Vector2> uvs = new List <Vector2>(); List <Color> clrs = new List <Color>(); List <int> indc = new List <int>(); Mesh curM = null; Vector3 avg = Vector3.zero; float mintime = -1; float maxtime = -1; foreach (string line in fLines) { if (line.Length < 2) { continue; } PosEntry en = entryFromLine(line); lst.Add(en); cnt++; avg += en.pos; if (maxtime < 0 || en.time > maxtime) { maxtime = en.time; } if (mintime < 0 || en.time < mintime) { mintime = en.time; } /* if(curMesh!=en.meshnum) * { * if(curM!=null) * { * AssetDatabase.CreateAsset(curM, "Assets/csmesh/cmesh_" + curMesh.ToString() + ".asset"); * } * } * if(curMesh==-1) curMesh=en.meshnum; * if(curId==-1) curId=en.id; * * * cnt++; * if(cnt>100) * break;*/ } Debug.Log(mintime); Debug.Log(maxtime); Debug.Log(avg / cnt); avg /= (float)cnt; cnt = 0; float td = maxtime - mintime; foreach (PosEntry en in lst) { if (curMesh != en.meshnum) { Meshobject msh = new Meshobject(verts.ToArray(), uvs.ToArray(), indc.ToArray()); output.meshes.Add(msh); //msh.indices = indc.ToArray(); // msh.verts = verts.ToArray(); // msh.uvs = uvs.ToArray(); //if(curM!=null) // { // curM.vertices=verts.ToArray(); // curM.uv=uvs.ToArray(); // curM.colors=clrs.ToArray(); // curM.SetIndices(indc.ToArray(),MeshTopology.Lines,0); //AssetDatabase.CreateAsset(curM, meshPath + curMesh.ToString() + ".asset"); //} verts.Clear(); uvs.Clear(); clrs.Clear(); indc.Clear(); curMesh = en.meshnum; curM = new Mesh(); cnt = 0; } if (curId == en.id) { indc.Add(cnt - 1); indc.Add(cnt); } else { curId = en.id; } verts.Add(en.pos + offset);// -avg); float shft = (en.time - mintime); if (System.Array.IndexOf(jet, en.id) > -1) { //ccolor.b = 0.8f; uvs.Add(new Vector2(shft, 1)); } else { uvs.Add(new Vector2(shft, 0)); } clrs.Add(Color.Lerp(Color.red, Color.green, shft)); cnt++; } if (verts.Count >= 2 && indc.Count > 0) { Meshobject msh = new Meshobject(verts.ToArray(), uvs.ToArray(), indc.ToArray()); output.meshes.Add(msh); } //if(curM!=null) // { // curM.vertices=verts.ToArray(); // curM.uv=uvs.ToArray(); // curM.colors=clrs.ToArray(); // curM.SetIndices(indc.ToArray(),MeshTopology.Lines,0); // AssetDatabase.CreateAsset(curM, meshPath + curMesh.ToString() + ".asset"); // } // output.SaveToFile(Application.persistentDataPath + "/" + "csvparsed.gz"); }
void OnWizardCreate() { if (csvFile == null) { return; } if (meshMat == null) { return; } List <PosEntry> lst = new List <PosEntry>(); GameObject go = new GameObject(csvFile.name); GameObject sec = new GameObject("offset"); sec.transform.parent = go.transform; sec.transform.localPosition = Vector3.zero; go.transform.position = Vector3.zero; string meshPath = "Assets/prefabsAndMeshes/mesh_" + csvFile.name; string fs = csvFile.text; string[] fLines = Regex.Split(fs, "\n|\r|\r\n"); int cnt = 0; int curMesh = -1; int curId = -1; List <Vector3> verts = new List <Vector3>(); List <Vector2> uvs = new List <Vector2>(); List <Color> clrs = new List <Color>(); List <int> indc = new List <int>(); Mesh curM = null; Vector3 avg = Vector3.zero; float mintime = -1; float maxtime = -1; float minInitTime = -1; float maxInitTime = -1; foreach (string line in fLines) { if (line.Length < 2) { continue; } if (line[0] == ',') { continue; } PosEntry en = entryFromLine(line); if (en.id != curId) { if (maxInitTime < 0 || en.time > maxInitTime) { maxInitTime = en.time; } if (minInitTime < 0 || en.time < minInitTime) { minInitTime = en.time; } curId = en.id; } lst.Add(en); cnt++; avg += en.pos; if (maxtime < 0 || en.time > maxtime) { maxtime = en.time; } if (mintime < 0 || en.time < mintime) { mintime = en.time; } } Debug.Log(mintime); Debug.Log(maxtime); Debug.Log(avg / cnt); avg /= (float)cnt; sec.transform.localPosition = avg; cnt = 0; float td = maxtime - mintime; float tdInit = 129.0f;//maxInitTime-minInitTime; - set it fixed... Color ccolor = new Color(); curId = -1; foreach (PosEntry en in lst) { if (curMesh != en.meshnum) { if (curM != null) { curM.vertices = verts.ToArray(); curM.uv = uvs.ToArray(); curM.colors = clrs.ToArray(); curM.SetIndices(indc.ToArray(), MeshTopology.Lines, 0); MakeGo(curM, sec, curMesh); AssetDatabase.CreateAsset(curM, meshPath + curMesh.ToString() + ".asset"); } verts.Clear(); uvs.Clear(); clrs.Clear(); indc.Clear(); curMesh = en.meshnum; curM = new Mesh(); cnt = 0; } float shft = (en.time - mintime) / td; if (curId == en.id) { indc.Add(cnt - 1); indc.Add(cnt); } else { curId = en.id; ccolor = Color.Lerp(Color.red, Color.green, (en.time - minInitTime) / tdInit); if (System.Array.IndexOf(jet, en.id) > -1) { ccolor.b = 0.8f; } else { ccolor *= 0.8f; } } verts.Add(en.pos - avg); uvs.Add(new Vector2(shft, 0)); clrs.Add(ccolor);//Color.Lerp(Color.red, Color.green, shft)); cnt++; } if (curM != null) { curM.vertices = verts.ToArray(); curM.uv = uvs.ToArray(); curM.colors = clrs.ToArray(); curM.SetIndices(indc.ToArray(), MeshTopology.Lines, 0); MakeGo(curM, sec, curMesh); AssetDatabase.CreateAsset(curM, meshPath + curMesh.ToString() + ".asset"); } PrefabUtility.CreatePrefab("Assets/prefabsAndMeshes/" + csvFile.name + ".prefab", go, ReplacePrefabOptions.ConnectToPrefab); }
void Start() { string meshPath = "Assets/csmesh800/cmesh800_"; string fs = csvFile.text; string[] fLines = Regex.Split(fs, "\n|\r|\r\n"); int cnt = 0; int curMesh = -1; int curId = -1; List <Vector3> verts = new List <Vector3>(); List <Vector2> uvs = new List <Vector2>(); List <Color> clrs = new List <Color>(); List <int> indc = new List <int>(); Mesh curM = null; Vector3 avg = Vector3.zero; float mintime = -1; float maxtime = -1; foreach (string line in fLines) { if (line.Length < 2) { continue; } PosEntry en = entryFromLine(line); lst.Add(en); cnt++; avg += en.pos; if (maxtime < 0 || en.time > maxtime) { maxtime = en.time; } if (mintime < 0 || en.time < mintime) { mintime = en.time; } /* if(curMesh!=en.meshnum) * { * if(curM!=null) * { * AssetDatabase.CreateAsset(curM, "Assets/csmesh/cmesh_" + curMesh.ToString() + ".asset"); * } * } * if(curMesh==-1) curMesh=en.meshnum; * if(curId==-1) curId=en.id; * * * cnt++; * if(cnt>100) * break;*/ } Debug.Log(mintime); Debug.Log(maxtime); Debug.Log(avg / cnt); avg /= (float)cnt; cnt = 0; float td = maxtime - mintime; foreach (PosEntry en in lst) { if (curMesh != en.meshnum) { //if(curM!=null) // { // curM.vertices=verts.ToArray(); // curM.uv=uvs.ToArray(); // curM.colors=clrs.ToArray(); // curM.SetIndices(indc.ToArray(),MeshTopology.Lines,0); //AssetDatabase.CreateAsset(curM, meshPath + curMesh.ToString() + ".asset"); //} verts.Clear(); uvs.Clear(); clrs.Clear(); indc.Clear(); curMesh = en.meshnum; curM = new Mesh(); cnt = 0; } if (curId == en.id) { indc.Add(cnt - 1); indc.Add(cnt); } else { curId = en.id; } verts.Add(en.pos - avg); float shft = (en.time - mintime) / td; uvs.Add(new Vector2(shft, 0)); clrs.Add(Color.Lerp(Color.red, Color.green, shft)); cnt++; } //if(curM!=null) // { // curM.vertices=verts.ToArray(); // curM.uv=uvs.ToArray(); // curM.colors=clrs.ToArray(); // curM.SetIndices(indc.ToArray(),MeshTopology.Lines,0); // AssetDatabase.CreateAsset(curM, meshPath + curMesh.ToString() + ".asset"); // } // }