Planner no longer writes local physics formulas. All kinematics/geometry/damage go through shared utility classes (Kinematics/RouteGeometry/CloudExpansionModel/DamageAssessment). Core: RouteGeometry (route geometry), PlannerConfig + planner_config.json (config externalization). Planner route-aware layout (offset along tangent), cloud overlap 20pct. DroneEntity arc-length driven. Fixes: PathInSphere cloud-frame correction (root cause), GaussianPuffDispersion hardcoded Sunny, ComputeEffectiveRadius cloud age, planner wind offset, remove drone wind bias. Tests 167 to 191, 41s. Windy scenarios pass.
22 lines
816 B
C#
22 lines
816 B
C#
using System;
|
|
using System.IO;
|
|
using CounterDrone.Core.Algorithms;
|
|
|
|
namespace CounterDrone.Core.Tests
|
|
{
|
|
/// <summary>测试用 PlannerConfig 加载辅助。
|
|
/// 从仓库 data/planner_config.json 加载真实配置,确保测试与生产配置一致。</summary>
|
|
public static class TestPlannerConfig
|
|
{
|
|
private static readonly Lazy<PlannerConfig> _instance = new(() =>
|
|
{
|
|
// bin\Debug\net10.0 → 上 6 层到仓库根,再进 data 目录
|
|
string baseDir = AppDomain.CurrentDomain.BaseDirectory;
|
|
string repoRoot = Path.GetFullPath(Path.Combine(baseDir, "..", "..", "..", "..", "..", ".."));
|
|
return PlannerConfig.Load(Path.Combine(repoRoot, "data"));
|
|
});
|
|
|
|
public static PlannerConfig Instance => _instance.Value;
|
|
}
|
|
}
|