/// <summary> /// Initializes a new instance of the <see cref="CaduhdApp"/> class. /// </summary> /// <param name="handsAnalyzer">A hands analyzer.</param> /// <param name="skinColorHandsDetector">A skin color based hands detector.</param> /// <param name="drone">A drone.</param> /// <param name="droneControllerKeyInputEvaluator">A drone controller key input evaluator.</param> /// <param name="droneControllerHandsInputEvaluator">A drone controller hands input evaluator.</param> public CaduhdApp( IHandsAnalyzer handsAnalyzer, ISkinColorHandsDetector skinColorHandsDetector, AbstractDrone drone, IDroneControllerKeyInputEvaluator droneControllerKeyInputEvaluator, IDroneControllerHandsInputEvaluator droneControllerHandsInputEvaluator) { this.isWebCameraFrameProcessorBusy = 0; this.handsAnalyzer = handsAnalyzer; this.skinColorHandsDetector = skinColorHandsDetector; if (drone is IStreamer streamer) { streamer.NewCameraFrame += this.StreamerNewCameraFrame; } if (drone is IStateful stateful) { stateful.StateChanged += this.StatefulStateChanged; } this.handsDroneController = new HandsDroneController(drone, droneControllerHandsInputEvaluator, droneControllerKeyInputEvaluator); }
/// <summary> /// Initializes a new instance of the <see cref="KeyboardDroneController"/> class. /// </summary> /// <param name="drone">The <see cref="AbstractDrone"/> drone that we would like to control with this controller.</param> /// <param name="keyInputEvaluator">The desired implementation of the <see cref="IDroneControllerKeyInputEvaluator"/> interface.</param> public KeyboardDroneController(AbstractDrone drone, IDroneControllerKeyInputEvaluator keyInputEvaluator) : base(drone) { this.keyInputEvaluator = keyInputEvaluator; }
/// <summary> /// Initializes a new instance of the <see cref="HandsDroneController"/> class. /// </summary> /// <param name="drone">The <see cref="AbstractDrone"/> drone that we would like to control with this controller.</param> /// <param name="handsInputEvaluator">The desired implementation of the <see cref="IDroneControllerHandsInputEvaluator"/> interface.</param> /// <param name="keyInputEvaluator">The desired implementation of the <see cref="IDroneControllerKeyInputEvaluator"/> interface.</param> public HandsDroneController(AbstractDrone drone, IDroneControllerHandsInputEvaluator handsInputEvaluator, IDroneControllerKeyInputEvaluator keyInputEvaluator) : base(drone, keyInputEvaluator) { this.handsInputEvaluator = handsInputEvaluator; }
/// <summary> /// Initializes a new instance of the <see cref="AbstractDroneController"/> class. /// </summary> /// <param name="drone">The <see cref="AbstractDrone"/> that we would like to control with this controller.</param> public AbstractDroneController(AbstractDrone drone) { this.drone = drone; this.lastCommandSentToDrone = null; }