protected override bool CustomChecks()
            {
                ExitAction ea = Action as ExitAction;
                var        r  = false;

                if (!Holder.Geometry.InsideInfluence(LatLon))
                {
                    if (!wasOutside)
                    {
                        r = wasOutside = true;
                    }
                }
                else
                {
                    wasOutside = false;
                }

                if (first)
                {
                    first = false;
                    if (ea.OnlyFromInside && wasOutside)
                    {
                        r = false;
                    }
                }

                return(r);
            }
Esempio n. 2
0
        public object DOMParse(XmlElement element, params object[] parameters)
        {
            GeoAction r;

            switch (element.Name)
            {
            default:
            case "exit-action":
                ExitAction exit = new ExitAction();
                exit.OnlyFromInside = bool.Parse(element.SelectSingleNode("only-from-inside").InnerText);
                r = exit;
                break;

            case "enter-action":
                EnterAction enter = new EnterAction();
                enter.OnlyFromOutside = bool.Parse(element.SelectSingleNode("only-from-outside").InnerText);
                r = enter;
                break;

            case "lookto-action":
                LookToAction lookto = new LookToAction();
                lookto.Inside = bool.Parse(element.SelectSingleNode("inside").InnerText);
                var centerNode = element.SelectSingleNode("center");
                lookto.Center = false;
                if (centerNode != null)
                {
                    lookto.Center = bool.Parse(centerNode.InnerText);
                }
                if (!lookto.Center)
                {
                    var components = element.SelectSingleNode("direction").InnerText.Split(' ');
                    lookto.Direction = new Vector2(float.Parse(components[0]), float.Parse(components[1]));
                }
                r = lookto;
                break;

            case "inspect-action":
                InspectAction inspect = new InspectAction();
                inspect.Inside = bool.Parse(element.SelectSingleNode("inside").InnerText);
                r = inspect;
                break;
            }

            ParseBasic(element, r, parameters);

            return(r);
        }
Esempio n. 3
0
            protected override bool CustomChecks()
            {
                ExitAction ea = Action as ExitAction;
                var        r  = false;

                if (first)
                {
                    r     = !wasInside && !ea.OnlyFromInside;
                    first = false;
                }

                if (!Holder.Geometry.InsideInfluence(LatLon) && wasInside)
                {
                    wasInside = false;
                    r         = wasInside;
                }
                return(r);
            }