Ejemplo n.º 1
0
        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");
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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;
        }
Ejemplo n.º 4
0
        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);
            }
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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);
        }
Ejemplo n.º 7
0
 void ChangeEditNode()
 {
     curEditNode = null;
     if (editMode)
     {
         sm.mpman.TurnOffMeshCollider();
     }
     else
     {
         if (curEditNode != null)
         {
             lm.RemoveNodeColorOverride(curEditNode.name);
         }
     }
     checkForNodeMovement = editMode;
 }
Ejemplo n.º 8
0
 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);
     }
 }
Ejemplo n.º 9
0
        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);
        }