public static void LoadNodeObjects(string tFileName, GSDSplineN tNode, bool bIsDefault = false, bool bIsBridge = false){ #if UNITY_WEBPLAYER return; #else string tPath = ""; GSDRootUtil.Dir_GetLibrary_CheckSpecialDirs(); string xPath = GSDRootUtil.Dir_GetLibrary(); if(bIsDefault){ tPath = xPath + "B/W/" + tFileName + ".gsd"; }else{ tPath = xPath + "B/" + tFileName + ".gsd"; } string tData = System.IO.File.ReadAllText(tPath); string[] tSep = new string[1]; tSep[0] = FileSepString; string[] tSplit = tData.Split(tSep,System.StringSplitOptions.RemoveEmptyEntries); Splination.SplinatedMeshMaker SMM = null; Splination.SplinatedMeshMaker.SplinatedMeshLibraryMaker SLM = null; EdgeObjects.EdgeObjectMaker EOM = null; EdgeObjects.EdgeObjectMaker.EdgeObjectLibraryMaker ELM = null; int tSplitCount = tSplit.Length; for(int i=0;i<tSplitCount;i++){ SLM = null; SLM = Splination.SplinatedMeshMaker.SLMFromData(tSplit[i]); if(SLM != null){ SMM = tNode.AddSplinatedObject(); SMM.LoadFromLibraryBulk(ref SLM); SMM.bToggle = false; if(bIsBridge && tNode.bIsBridgeStart && tNode.bIsBridgeMatched && tNode.BridgeCounterpartNode != null){ SMM.StartTime = tNode.tTime; SMM.EndTime = tNode.BridgeCounterpartNode.tTime; SMM.StartPos = tNode.GSDSpline.GetSplineValue(SMM.StartTime); SMM.EndPos = tNode.GSDSpline.GetSplineValue(SMM.EndTime); } continue; } ELM = null; ELM = EdgeObjects.EdgeObjectMaker.ELMFromData(tSplit[i]); if(ELM != null){ EOM = tNode.AddEdgeObject(); EOM.LoadFromLibraryBulk(ref ELM); EOM.bToggle = false; if(!EOM.bSingle && bIsBridge && tNode.bIsBridgeStart && tNode.bIsBridgeMatched && tNode.BridgeCounterpartNode != null){ EOM.StartTime = tNode.tTime; EOM.EndTime = tNode.BridgeCounterpartNode.tTime; EOM.StartPos = tNode.GSDSpline.GetSplineValue(EOM.StartTime); EOM.EndPos = tNode.GSDSpline.GetSplineValue(EOM.EndTime); }else if(EOM.bSingle && bIsBridge && tNode.BridgeCounterpartNode != null && tNode.bIsBridgeStart){ float tDist = (EOM.SingleOnlyBridgePercent * (tNode.BridgeCounterpartNode.tDist - tNode.tDist) + tNode.tDist); EOM.SinglePosition = tNode.GSDSpline.TranslateDistBasedToParam(tDist); EOM.StartPos = tNode.GSDSpline.GetSplineValue(EOM.SinglePosition); EOM.EndPos = tNode.GSDSpline.GetSplineValue(EOM.SinglePosition); } continue; } } tNode.SetupSplinatedMeshes(); tNode.SetupEdgeObjects(); #endif }
private void DoGUI() { if (bNoGUI) { return; } if (oList == null) { Close(); return; } GUILayout.Space(4f); EditorGUILayout.BeginHorizontal(); if (tNode.bIsBridgeStart) { xWindowType = (WindowTypeEnum)EditorGUILayout.Popup("Category: ", (int)tWindowType, WindowTypeDescBridge, GUILayout.Width(312f)); } else { if (xWindowType == WindowTypeEnum.Edge) { SxWindowType = WindowTypeEnumShort.Edge; } else if (xWindowType == WindowTypeEnum.Extrusion) { SxWindowType = WindowTypeEnumShort.Extrusion; } else { SxWindowType = WindowTypeEnumShort.Groups; } SxWindowType = (WindowTypeEnumShort)EditorGUILayout.Popup("Category: ", (int)StWindowType, WindowTypeDesc, GUILayout.Width(312f)); if (SxWindowType == WindowTypeEnumShort.Extrusion) { xWindowType = WindowTypeEnum.Extrusion; } else if (SxWindowType == WindowTypeEnumShort.Edge) { xWindowType = WindowTypeEnum.Edge; } else { xWindowType = WindowTypeEnum.Groups; } StWindowType = SxWindowType; } if (xWindowType != tWindowType) { Initialize(xWindowType, tNode); EditorGUILayout.EndHorizontal(); return; } EditorGUILayout.LabelField(""); EditorGUILayout.LabelField("Single-click items to load", EditorStyles.boldLabel, GUILayout.Width(200f)); EditorGUILayout.EndHorizontal(); if (oList.Count == 0) { return; } int oCount = oList.Count; int WidthSpacing = 160; int HeightSpacing = 200; int HeightOffset = 30; int ScrollHeightOffset = 25; int xCount = 0; int yCount = 0; int yMod = Mathf.FloorToInt((float)position.width / 142f) - 1; int yMax = 0; if (yMod == 0) { yMax = 1; } else { yMax = Mathf.CeilToInt((float)oCount / (float)yMod); } bool bScrolling = false; if ((((yMax) * HeightSpacing) + 25) > position.height) { scrollPos = GUI.BeginScrollView(new Rect(0, 25, position.width - 10, position.height - 30), scrollPos, new Rect(0, 0, (yMod * WidthSpacing) + 25, (((yMax) * HeightSpacing) + 50))); bScrolling = true; HeightOffset = ScrollHeightOffset; } EditorGUILayout.BeginHorizontal(); bool bClicked = false; for (int i = 0; i < oCount; i++) { if (i > 0) { if (yMod == 0) { EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); yCount += 1; xCount = 0; } else { if (i % yMod == 0) { EditorGUILayout.EndHorizontal(); EditorGUILayout.BeginHorizontal(); yCount += 1; xCount = 0; } } } if (xCount == 0) { bClicked = DoItem((xCount * WidthSpacing) + 5, (yCount * HeightSpacing) + HeightOffset, i); } else { bClicked = DoItem(xCount * WidthSpacing, (yCount * HeightSpacing) + HeightOffset, i); } if (bClicked) { if (tWindowType == WindowTypeEnum.Extrusion) { GSD.Roads.Splination.SplinatedMeshMaker SMM = tNode.AddSplinatedObject(); SMM.SetDefaultTimes(tNode.bIsEndPoint, tNode.tTime, tNode.NextTime, tNode.idOnSpline, tNode.GSDSpline.distance); SMM.LoadFromLibrary(oList[i].FileName, oList[i].bIsDefault); SMM.bIsGSD = oList[i].bIsDefault; SMM.Setup(true); } else if (tWindowType == WindowTypeEnum.Edge) { GSD.Roads.EdgeObjects.EdgeObjectMaker EOM = tNode.AddEdgeObject(); EOM.SetDefaultTimes(tNode.bIsEndPoint, tNode.tTime, tNode.NextTime, tNode.idOnSpline, tNode.GSDSpline.distance); EOM.LoadFromLibrary(oList[i].FileName, oList[i].bIsDefault); EOM.bIsGSD = oList[i].bIsDefault; EOM.Setup(); } else if (tWindowType == WindowTypeEnum.Groups) { tNode.LoadWizardObjectsFromLibrary(oList[i].FileName, oList[i].bIsDefault, oList[i].bIsBridge); } else if (tWindowType == WindowTypeEnum.BridgeComplete) { tNode.LoadWizardObjectsFromLibrary(oList[i].FileName, oList[i].bIsDefault, oList[i].bIsBridge); } tNode.bQuitGUI = true; oList.Clear(); oList = null; EditorGUILayout.EndHorizontal(); if (bScrolling) { GUI.EndScrollView(); } bNoGUI = true; Close(); return; } xCount += 1; } EditorGUILayout.EndHorizontal(); if (bScrolling) { GUI.EndScrollView(); } }