PayloadScan scanPayload()
        {
            // scan payload and build its profile
            var scan = new PayloadScan(part, verticalStep, extraRadius);

            AttachNode node = part.findAttachNode("top");

            if (node != null)
            {
                scan.ofs = node.position.y;
                if (node.attachedPart != null)
                {
                    scan.addPart(node.attachedPart, part);
                }
            }

            node = part.findAttachNode("top1");
            if (node != null)
            {
//      scan.ofs=node.position.y;
                if (node.attachedPart != null)
                {
                    scan.addPart(node.attachedPart, part);
                }
            }

            for (int i = 0; i < scan.payload.Count; ++i)
            {
                var cp = scan.payload[i];

                // add connected payload parts
                scan.addPart(cp.parent, cp);
                foreach (var p in cp.children)
                {
                    scan.addPart(p, cp);
                }

                // scan part colliders
                foreach (var coll in cp.FindModelComponents <Collider>())
                {
                    if (coll.tag != "Untagged")
                    {
                        continue;           // skip ladders etc.
                    }
                    scan.addPayload(coll);
                }
            }

            return(scan);
        }
        PayloadScan scanPayload()
        {
            //  Scan the payload and build it's profile.

            var scan = new PayloadScan(part, verticalStep, extraRadius);

            AttachNode node = part.FindAttachNode("top");

            if (node != null)
            {
                scan.ofs = node.position.y;

                if (node.attachedPart != null)
                {
                    scan.addPart(node.attachedPart, part);
                }
            }

            AttachNode [] nodes = part.FindAttachNodes("interstage");

            if (nodes != null)
            {
                for (int j = 0; j < nodes.Length; j++)
                {
                    node = nodes [j];

                    if (node != null)
                    {
                        if (node.attachedPart != null)
                        {
                            scan.addPart(node.attachedPart, part);
                        }
                    }
                }
            }

            for (int i = 0; i < scan.payload.Count; ++i)
            {
                var cp = scan.payload [i];

                //  Add any connected payload parts.

                scan.addPart(cp.parent, cp);

                for (int j = 0; j < cp.children.Count; j++)
                {
                    scan.addPart(cp.children[j], cp);
                }

                //  Scan for the part colliders.

                var colls = cp.FindModelComponents <Collider>();

                for (int j = 0; j < colls.Count; j++)
                {
                    var coll = colls [j];

                    //  Skip ladders etc...

                    if (coll.tag != "Untagged")
                    {
                        continue;
                    }

                    scan.addPayload(coll);
                }
            }

            return(scan);
        }
        PayloadScan scanPayload()
        {
            // scan payload and build its profile
            var scan=new PayloadScan(part, verticalStep, extraRadius);

            AttachNode node=part.findAttachNode("top");
            if (node!=null)
            {
              scan.ofs=node.position.y;
              if (node.attachedPart!=null) scan.addPart(node.attachedPart, part);
            }

            node=part.findAttachNode("top1");
            if (node!=null)
            {
            //      scan.ofs=node.position.y;
              if (node.attachedPart!=null) scan.addPart(node.attachedPart, part);
            }

            for (int i=0; i<scan.payload.Count; ++i)
            {
              var cp=scan.payload[i];

              // add connected payload parts
              scan.addPart(cp.parent, cp);
              foreach (var p in cp.children) scan.addPart(p, cp);

              // scan part colliders
              foreach (var coll in cp.FindModelComponents<Collider>())
              {
            if (coll.tag!="Untagged") continue; // skip ladders etc.
            scan.addPayload(coll);
              }
            }

            return scan;
        }