Compare commits

...

1 Commits

Author SHA1 Message Date
nico-dev 89b1db029d 🚀 Added exercise 2 part 3
1 year ago

@ -8,36 +8,63 @@ using System.Threading.Tasks;
namespace KinectUtils namespace KinectUtils
{ {
// Classe de base pour les mappages. T est le type de données renvoyé par le mappage.
public abstract class BaseMapping<T> public abstract class BaseMapping<T>
{ {
// Indique si le mappage est en cours d'exécution.
private bool running; private bool running;
//public EventHandler<OnMapping> OnMapping { get; set; } // Événement déclenché lorsque le mappage est effectué.
public EventHandler<T> OnMapping { get; set; }
// Souscrit à un geste qui démarre le mappage.
public void SubscribeToStartGesture(BaseGesture gesture) public void SubscribeToStartGesture(BaseGesture gesture)
{ {
// Lorsque le geste est reconnu, le mappage est démarré.
gesture.GestureRecognized += (sender, args) => running = true;
} }
// Souscrit à un geste qui arrête le mappage.
public void SubscribeToEndGesture(BaseGesture gesture) public void SubscribeToEndGesture(BaseGesture gesture)
{ {
// Lorsque le geste est reconnu, le mappage est arrêté.
gesture.GestureRecognized += (sender, args) => running = false;
} }
// Souscrit à un geste qui bascule l'état du mappage.
public void SubscribeToToggleGesture(BaseGesture gesture) public void SubscribeToToggleGesture(BaseGesture gesture)
{ {
// Lorsque le geste est reconnu, l'état du mappage est inversé.
gesture.GestureRecognized += (sender, args) => running = !running;
} }
// Méthode abstraite pour effectuer le mappage. Doit être implémentée par les classes dérivées.
protected abstract T Mapping(Body body); protected abstract T Mapping(Body body);
/*bool TestMapping(Body body, out T ouput) // Teste si le mappage peut être effectué.
bool TestMapping(Body body)
{
// Le mappage peut être effectué si le mappage est en cours d'exécution.
return running;
}
// Teste si le mappage peut être effectué et renvoie le résultat du mappage.
protected bool TestMapping(Body body, out T output)
{ {
}*/ // Initialise la sortie à la valeur par défaut.
output = default(T);
protected void OnBodyFrameArrived(object obj, BodyFrameArrivedEventArgs args) // Si le mappage n'est pas en cours d'exécution, retourne false.
if (!running)
{ {
return false;
}
// Appelle la méthode de mappage et assigne le résultat à la sortie.
output = Mapping(body);
// Retourne true si le mappage a réussi.
return output != null;
} }
} }
} }

@ -6,5 +6,6 @@ namespace KinectUtils
public interface IGestureFactory public interface IGestureFactory
{ {
IEnumerable<BaseGesture> CreateGestures(); IEnumerable<BaseGesture> CreateGestures();
BaseGesture this[string name] { get; }
} }
} }

@ -12,8 +12,10 @@ namespace KinectUtils
/// </summary> /// </summary>
public class PenaltyMasterGestureFactory : IGestureFactory public class PenaltyMasterGestureFactory : IGestureFactory
{ {
private Dictionary<string, BaseGesture> gestures = new Dictionary<string, BaseGesture>();
/// <summary> /// <summary>
/// Creates all baseGesture objects needed for the penaly master /// Creates all baseGesture objects needed for the penalty master
/// </summary> /// </summary>
/// <returns></returns> /// <returns></returns>
/// <exception cref="NotImplementedException"></exception> /// <exception cref="NotImplementedException"></exception>
@ -30,16 +32,32 @@ namespace KinectUtils
// Gesture // Gesture
SoccerShootGesture soccerShootGesture = new SoccerShootGesture(); SoccerShootGesture soccerShootGesture = new SoccerShootGesture();
BaseGesture[] gestures = new BaseGesture[5]; // Add gestures to the dictionary
gestures[0] = postureHandUpLeft; gestures.Add("PostureHandUpRight", postureHandUpRight);
gestures[1] = postureHandUpRight; gestures.Add("PostureHandUpLeft", postureHandUpLeft);
gestures[2] = postureHandDownLeft; gestures.Add("PostureHandDownLeft", postureHandDownLeft);
gestures[3] = postureHandDownRight; gestures.Add("PostureHandDownRight", postureHandDownRight);
//gestures[4] = postureTwoHandsDown; //gestures.Add("PostureTwoHandsDown", postureTwoHandsDown);
//gestures[5] = postureTwoHandsUp; //gestures.Add("PostureTwoHandsUp", postureTwoHandsUp);
gestures[4] = soccerShootGesture; gestures.Add("SoccerShootGesture", soccerShootGesture);
return gestures.Values;
}
return gestures; // Indexer to get a gesture by its name
public BaseGesture this[string name]
{
get
{
if (gestures.ContainsKey(name))
{
return gestures[name];
}
else
{
throw new KeyNotFoundException($"Gesture with name {name} not found.");
}
}
} }
} }
} }
Loading…
Cancel
Save