﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/* Recherche dans les children les caméras seulement right et les caméras seulement left, 
 * les mémorise dans start. 
 * Puis inverse le left et right à la demande.
 * */
public class PermuteStereoscopie : MonoBehaviour {

    List<Camera> cameras = new List<Camera>();

    public GameObject InfosPermutation;
    public float Duration = 5.0f;
    float timer = -1.0f;

	// Use this for initialization
	void Start () {
	    foreach ( var camera in GetComponentsInChildren<Camera>())
        {
            if ((camera.stereoTargetEye == StereoTargetEyeMask.Left) || (camera.stereoTargetEye == StereoTargetEyeMask.Right))
            {
                cameras.Add(camera);
            }
            else
            {
                Debug.Log("Trouvé une caméra mono ou both dans l'initialisation de Permute stéréoscopie");
            }
        }
        if (InfosPermutation != null)
        {
            InfosPermutation.SetActive(false);
        }
	}
	
	// Update is called once per frame
	void Update () {
		if (Input.GetKeyDown(KeyCode.P))
        {
            Debug.Log("Permute stéréoscopie");
            Permute();
        }
        if (timer > 0.0f)
        {
            timer -= Time.deltaTime;
            if (timer <= 0.0f)
            {
                InfosPermutation.SetActive(false);
                timer = -1.0f;
            }
        }
	}

    public void Permute()
    {
        foreach (var camera in cameras)
        {
            if (camera.stereoTargetEye == StereoTargetEyeMask.Left)
            {
                camera.stereoTargetEye = StereoTargetEyeMask.Right;
            }
            else if (camera.stereoTargetEye == StereoTargetEyeMask.Right)
            {
                camera.stereoTargetEye = StereoTargetEyeMask.Left;
            }
        }
        if (InfosPermutation != null)
        {
            InfosPermutation.SetActive(true);
            timer = Duration;
        }
    }
}
