/** If a trajectory has only one node, the player is not displayed. To fix that situation, the node is duplicated with a slightly different location.
         * Both old and new nodes are linked through a side.
         *
         * @param scene
         */
        public static void fixSingleNode(Scene scene)
        {
            Trajectory trajectory = scene.getTrajectory();

            if (trajectory != null)
            {
                if (trajectory.getNodes().Count == 1)
                {
                    Trajectory.Node node1 = trajectory.getNodes()[0];
                    trajectory.addNode(node1.getID() + "Dupl", node1.getX() + 1, node1.getY(), node1.getScale());
                    trajectory.addSide(node1.getID(), node1.getID() + "Dupl", 1);
                }
            }
        }
コード例 #2
0
        public object DOMParse(XmlElement element, params object[] parameters)
        {
            Trajectory trajectory = new Trajectory();

            foreach (XmlElement el in element.SelectNodes("node"))
            {
                string id   = el.GetAttribute("id");
                int    x    = ExParsers.ParseDefault(el.GetAttribute("x"), 0),
                       y    = ExParsers.ParseDefault(el.GetAttribute("y"), 0);
                float scale = ExParsers.ParseDefault(el.GetAttribute("scale"), CultureInfo.InvariantCulture, 1.0f);
                scale = Mathf.Max(0, scale);
                trajectory.addNode(id, x, y, scale);
            }

            foreach (XmlElement el in element.SelectNodes("side"))
            {
                string idStart = el.GetAttribute("idStart");
                string idEnd   = el.GetAttribute("idEnd");
                int    length  = ExParsers.ParseDefault(el.GetAttribute("length"), -1);

                trajectory.addSide(idStart, idEnd, length);
            }

            var initialNode = element.SelectSingleNode("initialnode") as XmlElement;

            if (initialNode != null)
            {
                trajectory.setInitial(initialNode.GetAttribute("id"));
            }

            if (trajectory.getNodes().Count != 0)
            {
                // trajectory.deleteUnconnectedNodes();
                return(trajectory);
            }

            return(null);
        }
コード例 #3
0
        public object DOMParse(XmlElement element, params object[] parameters)
        {
            Trajectory trajectory = new Trajectory();

            foreach (XmlElement el in element.SelectNodes("node"))
            {
                string id   = el.GetAttribute("id") ?? "";
                int    x    = int.Parse(el.GetAttribute("x") ?? "0"),
                       y    = int.Parse(el.GetAttribute("y") ?? "0");
                float scale = float.Parse(el.GetAttribute("scale") ?? "1.0", CultureInfo.InvariantCulture);

                trajectory.addNode(id, x, y, scale);
            }

            foreach (XmlElement el in element.SelectNodes("side"))
            {
                string idStart = el.GetAttribute("idStart") ?? "";
                string idEnd   = el.GetAttribute("idEnd") ?? "";
                int    length  = int.Parse(el.GetAttribute("length") ?? "-1");

                trajectory.addSide(idStart, idEnd, length);
            }

            var initialNode = element.SelectSingleNode("initialnode");

            if (initialNode != null)
            {
                trajectory.setInitial(element.GetAttribute("id") ?? "");
            }

            if (trajectory.getNodes().Count != 0)
            {
                trajectory.deleteUnconnectedNodes();
                return(trajectory);
            }

            return(null);
        }