Files
kaptan/ground-suite/lib/features/fleet/domain/fleet_unit.dart
T

47 lines
1.4 KiB
Dart

import '../../vehicle_workspace/domain/vehicle_definition.dart';
/// An operator-created fleet unit in the local planning workspace.
///
/// It deliberately contains no received identity, platform, authority, or
/// physical pose. Those must arrive through separate reviewed bindings later.
class FleetUnit {
const FleetUnit({
required this.localUnitId,
required this.displayName,
required this.definition,
required this.localPlacement,
});
final String localUnitId;
final String displayName;
final VehicleDefinition definition;
final LocalScenePoint localPlacement;
FleetUnit copyWith({String? displayName}) => FleetUnit(
localUnitId: localUnitId,
displayName: displayName ?? this.displayName,
definition: definition,
localPlacement: localPlacement,
);
}
/// A normalized placement in the operator's local tactical scene.
///
/// This is deliberately not a geographic position, vehicle pose, or received
/// location. A future map binding will keep reported coordinates separate.
class LocalScenePoint {
const LocalScenePoint({required this.x, required this.y})
: assert(x >= 0 && x <= 1),
assert(y >= 0 && y <= 1);
final double x;
final double y;
@override
bool operator ==(Object other) =>
other is LocalScenePoint && other.x == x && other.y == y;
@override
int get hashCode => Object.hash(x, y);
}