using System.Collections; using System.Collections.Generic; using UnityEngine; public class tuio_event : MonoBehaviour { #if true public GameObject img; public Transform canvas; //public UltraCombos.GlobalMKHookInput tuio_input; Dictionary movies = new Dictionary(); void Update() { var touches = TUIOManager.Instance.touches; foreach (var id in touches.Keys) { movieController movie = null; if (movies.ContainsKey(id) == false) // Add { Debug.Log("Add"); GameObject g = Instantiate(img, canvas); g.name = id.ToString(); movie = g.AddComponent(); movie.id = id; movies.Add(id, movie); movie.transform.position = touches[id].position; } else //update { movie = movies[id]; } //update or after adding //Debug.Log("Update"); //movie.transform.position = touches[id].position; } var removes = new HashSet(); foreach (var id in movies.Keys) { if (touches.ContainsKey(id) == false) // remove { //Destroy(movies[id].gameObject); //movies.Remove(id); removes.Add(id); } } foreach (var id in removes) { if (movies[id].stat == 2) { movies[id].stat = 3; movies[id].destroy_timer = Time.time; movies.Remove(id); Debug.Log("Remove"); } //movies[id].destroy_timer = Time.time; } //movies.Remove(id); } #else // Start is called before the first frame update public GameObject img; public GameObject canvas; public UltraCombos.GlobalMKHookInput tuio_input; List cur_ids = new List(); List pre_ids = new List(); int pre_count; int cur_count; void Start() { cur_count = 0; } void Update() { reset_id(); pre_count = cur_count; pre_ids.Clear(); cur_ids.ForEach(i => pre_ids.Add(i)); cur_count = tuio_input.touchCount; cur_ids.Clear(); for (int i = 0; i < cur_count; i++) { cur_ids.Add(tuio_input.GetTouch(i).fingerId); } if (cur_count > pre_count) // Add { //Debug.Log("Add"); for (int i = 0; i < cur_count; i++) { int f_id = tuio_input.GetTouch(i).fingerId; bool isOldTouch = pre_ids.Contains(f_id); if (isOldTouch == false) { GameObject g = Instantiate(img, canvas.GetComponent()); g.name = f_id.ToString(); //g.GetComponent().id = i; } } } else if (cur_count < pre_count) // Remove { //Debug.Log("Remove"); int exit_id; for (int i = 0; i < pre_count; i++) { int _id = pre_ids[i]; bool isExitTouch = !cur_ids.Contains(_id); if (isExitTouch) { exit_id = _id; //GameObject.Find(_id.ToString()).GetComponent().stat = 2; Destroy(GameObject.Find(_id.ToString())); } } } reset_id(); } void reset_id() { GameObject[] objs = GameObject.FindGameObjectsWithTag("onFoot"); //Debug.Log(objs.Length); for (int i = 0; i < objs.Length; i++) { objs[i].GetComponent().id = i - 1; Debug.Log(objs[i].name + " / id = " + objs[i].GetComponent().id.ToString()); } } #endif }