You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
136 lines
4.0 KiB
136 lines
4.0 KiB
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<int, movieController> movies = new Dictionary<int, movieController>();
|
|
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<movieController>();
|
|
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<int>();
|
|
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<int> cur_ids = new List<int>();
|
|
List<int> pre_ids = new List<int>();
|
|
|
|
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<Transform>());
|
|
g.name = f_id.ToString();
|
|
//g.GetComponent<movieController>().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<movieController>().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<movieController>().id = i - 1;
|
|
Debug.Log(objs[i].name + " / id = " + objs[i].GetComponent<movieController>().id.ToString());
|
|
}
|
|
}
|
|
#endif
|
|
}
|
|
|