# **************************************************************************** # CUI # # The Advanced Framework for Simulation, Integration, and Modeling (AFSIM) # # The use, dissemination or disclosure of data in this file is subject to # limitation or restriction. See accompanying README and LICENSE for details. # **************************************************************************** //TODO use default values from higher level context (processor or parent behavior that holds default) #assumes aDraw duration & layer is set script void DrawRoute(WsfDraw aDraw, WsfRoute aRoute) if (aRoute.IsValid()) { aDraw.SetColor(0,1,1); //teal? aDraw.SetLineSize(2); aDraw.SetLineStyle("solid"); aDraw.BeginPolyline(); for (int i=0; i turnRad = aMover.PropertyDouble("turn_radius"); if (turnRad.Size() > 0) { d3 = 2*turnRad[0]; } int i = 0; for (; i < ro.Size(); i = i+1) { WsfWaypoint wpt = ro.Waypoint(i); WsfGeoPoint rpt = wpt.Location(); //check if we are close to an existing waypoint, if so... break & fly at that one if (rpt.GroundRangeTo(close) < 926) { break; } double dist = ro.DistanceAlongRoute(rpt); if (dist > d1) { if (d2 > d3) { ro.Insert(i, WsfWaypoint.Create(close, wpt.Speed())); } break; } } if (i >= ro.Size()) { i = ro.Size() - 1; } //go at default speed; this gets overwritten if route waypoint has defined a speed PLATFORM.GoToSpeed(cDEFAULT_SPEED, cDEFAULT_ACCEL, true); PLATFORM.FollowRoute(ro, i); } } if (mDrawRoute) { mDraw.SetDuration(PROCESSOR.UpdateInterval()); mDraw.SetLayer("behavior_planned_route"); DrawRoute(mDraw, PLATFORM.Route()); } end_execute end_behavior