import 'package:fis_measure/interfaces/process/items/item.dart'; import 'package:fis_measure/interfaces/process/items/item_metas.dart'; import 'package:fis_measure/process/calcuators/ray.dart'; import 'package:fis_measure/process/items/top_item_feature.dart'; import 'package:fis_measure/process/primitives/ray.dart'; import 'package:fis_measure/process/items/item.dart'; import 'package:fis_measure/process/items/item_feature.dart'; import 'package:fis_measure/process/items/top_item.dart'; abstract class TwoRayAbstract extends TopMeasureItem { TwoRayAbstract(ItemMeta meta) : super(meta); MeasureItem get child1; MeasureItem get child2; } class TwoRay extends TwoRayAbstract { @override bool get ifAutoFinish => true; @override bool get ifAutoStart => true; @override bool get finishAfterUnactive => false; late final Ray x; late final Ray y; TwoRay(ItemMeta meta) : super(meta) { final metaX = meta.childItems[0]; final metaY = meta.childItems[1]; x = Ray.createRay(metaX, this); y = Ray.createRay(metaY, this); //TODO:[Gavin] angle 没有传来,暂时写死 y.initializeAngle = 45; childItems.add(x); childItems.add(y); } @override Ray get child1 => x; @override Ray get child2 => y; @override TwoRayFeature buildFeature() => TwoRayFeature(this); @override void onCancelingOnce() {} static TwoRay createTwoRay(ItemMeta meta, [IMeasureItem? parent]) { TwoRay twoRay = TwoRay(meta); twoRay.calculator = RayDepthCal(twoRay.child1); return twoRay; } } class TwoRayFeature extends TopMeasureItemFeature { TwoRayFeature( ITopMeasureItem refItem, ) : super(refItem); }