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); }
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); }
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); }