﻿using UnityEngine;
using System.Collections;

using Augumenta;

/**
 * Simple component that listens and logs the selected
 * events from Augumenta AIP.
 */
public class AgapiDebugListener : MonoBehaviour {

	public bool logPoseDetectedEvents = false;
	public bool logPoseMotionEvents = false;
	public bool logPoseLostEvents = false;

	public bool logTransitionEvents = false;
	public bool logPathEvents = false;

	void OnEnable() {
		// add global listeners when this object is enabled
		UnityAgapi agapi = UnityAgapi.Instance;
		agapi.onPoseEvent += OnPose;
		agapi.onPoseLostEvent += OnPoseLost;
		agapi.onPathEvent += OnPath;
		agapi.onTransitionEvent += OnTransition;
	}

	void OnDisable() {
		// remove global listeners when this object is disabled
		UnityAgapi agapi = UnityAgapi.Instance;
		agapi.onPoseEvent -= OnPose;
		agapi.onPoseLostEvent -= OnPoseLost;
		agapi.onPathEvent -= OnPath;
		agapi.onTransitionEvent -= OnTransition;
	}

	private void OnPose(PoseEvent e, bool isNew) {
		if (isNew && logPoseDetectedEvents) {
			Debug.Log ("Pose detected: " + e);
		}
		if (!isNew && logPoseMotionEvents) {
			Debug.Log ("Pose motion: " + e);
		}
	}

	private void OnPoseLost(PoseEvent e) {
		if (logPoseLostEvents) {
			Debug.Log ("Pose lost: " + e);
		}
	}

	private void OnTransition(TransitionEvent e) {
		if (logTransitionEvents) {
			Debug.Log ("Transition: " + e);
		}
	}

	private void OnPath(PathEvent e) {
		if (logPathEvents) {
			Debug.Log ("Path: " + e);
		}
	}
}
