public void SetCurrentEditNode(string nodename) { var node = grc.GetNode(nodename); if (curEditNode != null) { if (curEditNode.name != nodename) { lm.RemoveNodeColorOverride(curEditNode.name); } } curEditNode = node; editNodeRegion = grc.regman.GetRegion(node.regid); linkUseType = LinkUse.legacy; lm.SetNodeColorOverride(nodename, "green", node.go); foreach (var weg in node.wegtos) { var lnk = weg.link; if (lnk.regid == node.regid) { linkUseType = lnk.usetype; break; } } //sm.RequestRefresh("LinkEdit:SetCurrentEditMode"); }
public static GameObject MakeNewNodeGo(RouteMan rman, LcNode node, float nodesize, string cname) { var go = new GameObject(); var nodego = go.AddComponent <NodeGo>(); nodego.rman = rman; nodego.node = node; nodego.name = node.name; nodego.nodeName = node.name; nodego.nodePt = node.pt; nodego.nodeTransform = node.transform; nodego.nodeTransformSetCount = node.transformSetCount; nodego.lastmsg = ""; if (node.transform != null) { nodego.nodePtWc = node.transform.TransformPoint(node.pt); } go.name = node.name; go.transform.localPosition = node.pt; var sph = GraphUtil.CreateMarkerSphere(node.name + "-sph", node.pt, nodesize, cname); node.go = sph; if (rman != null && rman.garnish != RouterGarnishE.none) { var text = node.name + "\n" + node.pt; GraphUtil.addFloatingTextStatic(go, node.pt, text, cname, 90); } sph.transform.parent = go.transform; node.transform = sph.transform; node.transformSetCount += 1; return(go); }
public void CreateNodeGo(LcNode node) { var cname = nodecolor(node.name); var nsize = nodesize(node); var go = NodeGo.MakeNodeGo(sman, node, nsize, cname, 1 - linkTrans); go.transform.parent = grcnodes.transform; }
public void StartStretchMode() { var stretchnodename = curEditNode.name; Debug.Log("StartStrechMode selname:" + stretchnodename); grc.uniqueNodePrefix = uniqueNodePrefix; grc.uniqueLinkPrefix = uniqueLinkPrefix; if (grc.IsNodeName(stretchnodename)) { var node = grc.GetNode(stretchnodename); if (nodeMoveMode == nodeMoveModeE.move) { // turn purple and start stretching this.nodeMoveMode = nodeMoveModeE.stretch; originalpos = node.pt; lm.SetNodeColorOverride(node.name, "purple", node.go); } else { // now stop stretching //var npt = grc.finishStretchMovement(selname, originalpos,linkUseType, editNodeRegion.regid); var nodename = LcNode.NormName(stretchnodename); var lnode = grc.GetNode(nodename); var closeest = grc.FindClosestNodeToNodeGo(lnode); if (Vector3.Distance(closeest.go.transform.position, lnode.go.transform.position) > 0.2f) { // move the node because there is nothing close (20 cm) var newname = grc.genuniquenodename(); var newnode = grc.GetNewNode(newname, lnode.go.transform.position, lnode.usetype); newnode.regid = editNodeRegion.regid; lnode.pt = originalpos; lnode.go.transform.position = originalpos; var lnk = grc.AddLink("", lnode, newnode, linkUseType); lnk.regid = editNodeRegion.regid; SetCurrentEditNode(newnode.name); } else { // here we just link to the closest node ... this may not always be the right thing to do var newlinkname = grc.genuniquelinkname(); var lnk = grc.AddLink(newlinkname, lnode, closeest, linkUseType); lnk.regid = editNodeRegion.regid; } lm.RemoveNodeColorOverride(node.name); nodeMoveMode = nodeMoveModeE.move; //sm.RequestHighObjRefresh(selname,"SetStretchMode"); } } else { Debug.Log("Not a node name:" + stretchnodename); } }
private float nodesize(LcNode node) { var nodename = node.name; if (sman == null) { return(0.1f); } var rmmode = linkclrdicttran[node.usetype]; var rad = 2.0f * sman.getradius(rmmode); //Debug.Log("link.usetype:" + link.usetype + " rmmode:" + rmmode + " rad:" + rad); return(rad); }
bool CheckCapUseVisibility(LcNode node) { var rv = true; if (filterOnCap) { rv = LcLink.CanDoCapFromUse(capfilter, node.usetype); } else if (filterOnUse) { rv = node.usetype == this.usefilter; } return(rv); }
void ChangeEditNode() { curEditNode = null; if (editMode) { sm.mpman.TurnOffMeshCollider(); } else { if (curEditNode != null) { lm.RemoveNodeColorOverride(curEditNode.name); } } checkForNodeMovement = editMode; }
public void GenAstarPath() { if (startnodename == "") { LcNode snode = null; var prefstart = rman.linkcloudctrl.GetKeywordValue("DefStartNode"); snode = rman.linkcloudctrl.GetNodeOrNull(prefstart); if (snode == null) { snode = rman.linkcloudctrl.GetNode(0); } if (snode == null) { RouteMan.Log("Could not find start node in GenAstarPath"); return; } startnodename = snode.name; } if (endnodename == "") { LcNode enode = null; var prefstart = rman.linkcloudctrl.GetKeywordValue("DefEndNode"); enode = rman.linkcloudctrl.GetNodeOrNull(prefstart); if (enode == null) { enode = rman.linkcloudctrl.GetNode(-1); // lastpoint } if (enode == null) { RouteMan.Log("Could not find end node in GenAstarPath"); return; } endnodename = enode.name; } path = rman.linkcloudctrl.GenAstar(startnodename, endnodename); if (path == null) { RouteMan.Log("A * path was not found"); } else { RouteMan.Log("A * path length:" + _path.waypts.Count + " len:" + _path.pathLength); } }
public static GameObject MakeNodeGo(SceneMan sman, LcNode node, float nodesize, string cname, float alf, bool addcollider = true) { var go = new GameObject(); var nodego = go.AddComponent <NodeGo>(); nodego.sman = sman; nodego.node = node; nodego.name = node.name; nodego.nodeName = node.name; nodego.nodePt = node.pt; nodego.lng = node.lng; nodego.lat = node.lat; nodego.nodeTransform = node.transform; nodego.nodeTransformSetCount = node.transformSetCount; nodego.lastmsg = ""; if (node.transform != null) { nodego.nodePtWc = node.transform.TransformPoint(node.pt); } go.name = node.name; go.transform.localPosition = node.pt; var sph = GraphUtil.CreateMarkerSphere(node.name + "-sph", node.pt, nodesize, cname, alf); node.go = sph; if (sman != null && sman.garnish != RouteGarnishE.none) { var text = node.name + "\n" + node.pt + "\n" + node.lat.ToString("f6") + ", " + node.lng.ToString("f6"); GraphUtil.addFloatingTextStatic(go, node.pt, text, cname, 90); } if (addcollider) { sph.AddComponent <SphereCollider>(); } sph.transform.parent = go.transform; node.transform = sph.transform; node.transformSetCount += 1; return(go); }