private static Vec2 GetGlobalOrganicDirectionAux( ColumnFormation columnFormation, int depthCount = -1) { IEnumerable <Agent> unitsAtVanguardFile = columnFormation.GetUnitsAtVanguardFile <Agent>(); Vec2 zero = Vec2.Zero; int num = 0; Agent agent1 = (Agent)null; foreach (Agent agent2 in unitsAtVanguardFile) { if (agent1 != null) { Vec2 vec2 = (agent1.Position - agent2.Position).AsVec2.Normalized(); zero += vec2; ++num; } agent1 = agent2; if (depthCount > 0) { if (num >= depthCount) { break; } } } return(num == 0 ? Vec2.Invalid : zero *(1f / (float)num)); }
public static Vec2 GetGlobalHeadDirection(this ColumnFormation columnFormation) => MBExtensions.GetGlobalOrganicDirectionAux(columnFormation, 3);