private void AddSchnittpunkt(Gerade SchnittGerade, VirtualCompnonent SchnittEbene) { GameObject punktInfo = Instantiate(prefabSchnittpunktInfo); GameObject punkt = Instantiate(prefabSchnittpunkt); Schnittpunkt schnittpunkt = new Schnittpunkt { Gerade = SchnittGerade, Ebene = SchnittEbene, InfoParentMenu = Punkte, InfoUI = punktInfo, Model3D = punkt, color = UnityEngine.Random.ColorHSV(0f, 1f, 0.2f, 0.2f, 1f, 1f, 0.8f, 0.8f) }; foreach (MeshRenderer mr in punkt.GetComponentsInChildren <MeshRenderer>()) { mr.material.color = schnittpunkt.color; } SchnittGerade.Schnittpunkte.Add(schnittpunkt); punkt.GetComponent <Findschnittpunkt>().Gerade = SchnittGerade.GetTransform(); punkt.GetComponent <Findschnittpunkt>().Ebene = SchnittEbene.GetTransform(); punkt.transform.SetParent(pivot.transform); punktInfo.GetComponent <UpdateInfos>().Layertransform = punkt.transform; punktInfo.GetComponent <UpdateInfos>().compnonent = schnittpunkt; punktInfo.GetComponent <UpdateInfos>().menu = PunkteInfos; punktInfo.transform.SetParent(PunkteInfos.transform); if (!PunkteInfos.isopen) { punktInfo.SetActive(false); } PunkteInfos.MenuItems.Add(punktInfo); PunkteInfos.Rearrange(); }
private void AddDistanz(EditableComponent Element1, VirtualCompnonent Element2) { GameObject DistanzInfo = Instantiate(prefabDistanzInfo); Distanzen distanzen = new Distanzen() { Element1 = Element1, Element2 = Element2, InfoParentMenu = DistanzInfos, InfoUI = DistanzInfo }; DistanzInfo.GetComponent <UpdateDistance>().Element1 = Element1; DistanzInfo.GetComponent <UpdateDistance>().Element2 = Element2; DistanzInfo.GetComponent <UpdateDistance>().compnonent = distanzen; DistanzInfo.GetComponent <UpdateDistance>().menu = DistanzInfos; DistanzInfo.transform.SetParent(DistanzInfos.transform); Element1.Distanzen.Add(distanzen); if (Element2 is EditableComponent) { ((EditableComponent)Element2).Distanzen.Add(distanzen); } else { ((TrackedEbene)Element2).Distanzen.Add(distanzen); } if (!DistanzInfos.isopen) { DistanzInfo.SetActive(false); } DistanzInfos.MenuItems.Add(DistanzInfo); DistanzInfos.Rearrange(); UpdateAllLayers(); }
//// Update is called once per frame //UpdateInfos GetLayerinfo(Transform t) //{ // for (int i = 0; i < EbenenInfos.MenuItems.Count; i++) // { // GameObject ebene = EbenenInfos.MenuItems[i]; // UpdateInfos info = ebene.GetComponent<UpdateInfos>(); // if (info.Layertransform == t) // { // return info; // } // } // return null; //} List <VirtualCompnonent> Findassociated(VirtualCompnonent tf) { List <VirtualCompnonent> infos = new List <VirtualCompnonent>(); foreach (VirtualCompnonent Editable in EditableComponents) { if (tf == Editable || Editable.GetChildren().Contains(tf)) { infos.Add(tf); infos.AddRange(tf.GetChildren()); } } //for (int i = 0; i < GeradenInfos.MenuItems.Count; i++) //{ // GameObject gerade = GeradenInfos.MenuItems[i]; // UpdateInfos info = gerade.GetComponent<UpdateInfos>(); // if (info.Layertransform == tf) // { // SnapSchnittkante schnittkante = info.Layertransform.gameObject.GetComponent<SnapSchnittkante>(); // if (schnittkante != null) // { // infos.Add(GetLayerinfo(schnittkante.layer1)); // infos.Add(GetLayerinfo(schnittkante.layer2)); // } // infos.Add(info); // } // else // { // SnapSchnittkante schnittkante = info.Layertransform.gameObject.GetComponent<SnapSchnittkante>(); // if (schnittkante != null) // { // if (schnittkante.layer1 == tf || schnittkante.layer2 == tf) // { // infos.Add(info); // } // } // } //} //for (int i = 0; i < EbenenInfos.MenuItems.Count; i++) //{ // GameObject ebene = EbenenInfos.MenuItems[i]; // UpdateInfos info = ebene.GetComponent<UpdateInfos>(); // if (info.Layertransform == tf) // { // infos.Add(info); // } //} return(infos); }
public void AddObject(VirtualCompnonent virtc, GameObject Object3D, GameObject ObjectUI, GameObject ObjectInfo, MenuButton ParentUI, MenuButton ParentInfo, Color color, string name) { ObjectUI.transform.SetParent(ParentUI.transform); if (!(ObjectInfo is GameObject)) { Debug.LogError("objectinfo is no gameobject"); } if (!(ParentInfo is MenuButton)) { Debug.LogError("parentinfo is no gameobject"); } ObjectInfo.transform.SetParent(ParentInfo.transform); UpdateInfos updateInfos; if (ObjectInfo.TryGetComponent <UpdateInfos>(out updateInfos)) { updateInfos.Layertransform = Object3D.transform; updateInfos.Name.color = color; updateInfos.Name.text = name; } if (ObjectInfo.GetComponent <InfoMenuItem>() != null) { ObjectInfo.GetComponent <InfoMenuItem>().compnonent = virtc; ObjectInfo.GetComponent <InfoMenuItem>().menu = ParentInfo; } Object3D.transform.SetParent(pivot.transform); Object3D.transform.localPosition = new Vector3(0, 0, 0); Object3D.transform.rotation = new Quaternion(0, 0, 0, 0); //ParentUI.Items3D.Add(Object3D); ParentInfo.MenuItems.Add(ObjectInfo); ParentUI.MenuItems.Add(ObjectUI); foreach (MeshRenderer mr in Object3D.GetComponentsInChildren <MeshRenderer>()) { mr.material.color = color; } if (ObjectUI.GetComponent <EditCompUI>() != null) { ObjectUI.GetComponent <EditCompUI>().Transform = Object3D.transform; ObjectUI.GetComponent <EditCompUI>().component = (EditableComponent)virtc; } if (!ParentInfo.isopen) { ObjectInfo.SetActive(false); } ParentUI.Rearrange(); ParentInfo.Rearrange(); }
//void AddSchnittkante(Transform t1, Transform t2, string ebene1, string ebene2) void AddSchnittkante(VirtualCompnonent e1, VirtualCompnonent e2) { Debug.Log("adding schnittkante"); GameObject kantenobjekt = Instantiate(prefabSchnittkante); GameObject geradenInfo = Instantiate(prefabGeradenInfo); Schnittkante kante = new Schnittkante { Model3D = kantenobjekt, Name = "Schnitt\r\n" + e1.Name + "\r\n" + e2.Name, Ebene1 = e1, Ebene2 = e2, InfoUI = geradenInfo, InfoParentMenu = GeradenInfos, color = UnityEngine.Random.ColorHSV(0f, 1f, 0.2f, 0.2f, 1f, 1f, 0.8f, 0.8f) }; kante.Winkel = new Winkel { Schnittkante = kante, Name = "Winkel\r\n" + e1.Name + "\r\n" + e2.Name, color = kante.color, InfoParentMenu = WinkelInfos }; foreach (MeshRenderer mr in kantenobjekt.GetComponentsInChildren <MeshRenderer>()) { mr.material.color = kante.color; } kante.Schnittpunkte = new List <Schnittpunkt>(); if (e1 is Ebene) { kante.Model3D.GetComponent <SnapSchnittkante>().layer1 = ((Ebene)e1).Model3D.transform; ((Ebene)e1).Schnittkanten.Add(kante); } else if (e1 is TrackedEbene) { kante.Model3D.GetComponent <SnapSchnittkante>().layer1 = ((TrackedEbene)e1).Transform; ((TrackedEbene)e1).Schnittkanten.Add(kante); } if (e2 is Ebene) { kante.Model3D.GetComponent <SnapSchnittkante>().layer2 = ((Ebene)e2).Model3D.transform; ((Ebene)e2).Schnittkanten.Add(kante); } else if (e2 is TrackedEbene) { kante.Model3D.GetComponent <SnapSchnittkante>().layer2 = ((TrackedEbene)e2).Transform; ((TrackedEbene)e2).Schnittkanten.Add(kante); } kante.Model3D.transform.SetParent(pivot.transform); kante.Model3D.GetComponent <SnapSchnittkante>().updateposrot(); Debug.Log("added schnittkante"); geradenInfo.GetComponent <UpdateInfos>().Name.SetText(kante.Name); geradenInfo.GetComponent <UpdateInfos>().Layertransform = kante.Model3D.transform; geradenInfo.transform.SetParent(GeradenInfos.transform); geradenInfo.GetComponent <UpdateInfos>().compnonent = kante; geradenInfo.GetComponent <UpdateInfos>().menu = GeradenInfos; if (!GeradenInfos.isopen) { geradenInfo.SetActive(false); } GeradenInfos.MenuItems.Add(geradenInfo); GeradenInfos.Rearrange(); Debug.Log("added info"); GameObject winkelInfo = Instantiate(prefabSchnittWinkelInfo); winkelInfo.GetComponent <UpdateWinkel>().transform1 = kante.Ebene1.GetTransform(); winkelInfo.GetComponent <UpdateWinkel>().transform2 = kante.Ebene2.GetTransform(); winkelInfo.GetComponent <UpdateWinkel>().Transform1Description = kante.Ebene1.Name; winkelInfo.GetComponent <UpdateWinkel>().Transform2Description = kante.Ebene2.Name; winkelInfo.GetComponent <UpdateWinkel>().compnonent = kante.Winkel; winkelInfo.GetComponent <UpdateWinkel>().menu = WinkelInfos; winkelInfo.transform.SetParent(WinkelInfos.transform); if (!WinkelInfos.isopen) { winkelInfo.SetActive(false); } WinkelInfos.MenuItems.Add(winkelInfo); WinkelInfos.Rearrange(); kante.Winkel.InfoUI = winkelInfo; Debug.Log("added winkelinfo"); UpdateAllLayers(); }