protected override bool CustomChecks() { EnterAction ea = Action as EnterAction; var r = false; if (Holder.Geometry.InsideInfluence(LatLon)) { if (!wasInside) { r = wasInside = true; } } else { wasInside = false; } if (first) { first = false; if (ea.OnlyFromOutside && wasInside) { r = false; } } return(r); }
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); }