void Start() { // Get tiles values from dictionary to array JArray tileArray = JArray.Parse(GetComponent <Reader>().jsonFolder["02_IN_Levels"].ToString()); levels = new List <OM_level>(); for (int i = 0; i < tileArray.Count; i++) { var height = 0.0f; if (i < tileArray.Count - 1) { height = Math.Abs(tileArray[i + 1]["elevation"].ToObject <float>() - tileArray[i]["elevation"].ToObject <float>()); } else { height = Math.Abs(tileArray[i]["elevation"].ToObject <float>() - tileArray[i - 1]["elevation"].ToObject <float>()); } OM_level level = new OM_level { Name = tileArray[i]["name"].ToObject <string>(), Elevation = tileArray[i]["elevation"].ToObject <float>(), Height = height }; levels.Add(level); } levelsGenerated = true; }
// Find closest OM_Level according to given y value public OM_level FindClosestLevel(float number) { OM_level closest = levels.OrderBy(item => Math.Abs(number - item.Elevation)).First(); return(closest); }
// For new room, take y and find closest level value for this room Tuple <float, float> FindAssociatedHeightAndLevel(float meshHeight) { OM_level closestLevel = gameObject.GetComponentInParent <VisibilityController>().FindClosestLevel(meshHeight); return(Tuple.Create(closestLevel.Elevation, closestLevel.Height)); }