PersonManager.cs 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. using Assets.StreetLight.Adapters;
  2. using Assets.StreetLight.Interfaces;
  3. using Assets.StreetLight.Poco;
  4. using System;
  5. using System.Collections;
  6. using System.Collections.Generic;
  7. using System.Collections.ObjectModel;
  8. using System.Runtime.CompilerServices;
  9. using UnityEngine;
  10. public class PersonManager : MonoBehaviour
  11. {
  12. public ObservableCollection<Person> Persons { get; set; }
  13. private IPersonDetector personDetector;
  14. void Start()
  15. {
  16. var cylinderUL = GameObject.Find("CylinderUL");
  17. var cylinderUR = GameObject.Find("CylinderUR");
  18. var cylinderDR = GameObject.Find("CylinderDR");
  19. var cylinderDL = GameObject.Find("CylinderDL");
  20. var sphere = GameObject.Find("Sphere");
  21. // World to Unity Position
  22. //var calibrationVectors = new List<Tuple<Vector3, Vector3>> {
  23. // new Tuple<Vector3, Vector3>( new Vector3(-0.5225359f, -2.012292f, 3.934204f), new Vector3(cylinderUL.transform.position.x, cylinderUL.transform.position.y, cylinderUL.transform.position.z) ),
  24. // new Tuple<Vector3, Vector3>(new Vector3(2.538264f, -2.015675f, 2.318164f), new Vector3(cylinderUR.transform.position.x, cylinderUR.transform.position.y, cylinderUR.transform.position.z)),
  25. // new Tuple<Vector3, Vector3>(new Vector3(-1.551626f, -1.86093f, 2.275376f), new Vector3(cylinderDR.transform.position.x, cylinderDR.transform.position.y, cylinderDR.transform.position.z)),
  26. // new Tuple<Vector3, Vector3>(new Vector3(-1.095514f, -1.981828f, 2.849167f), new Vector3(cylinderDL.transform.position.x, cylinderDL.transform.position.y, cylinderDL.transform.position.z)),
  27. // new Tuple<Vector3, Vector3>(new Vector3(0.6326299f, -1.908295f, 2.349819f), new Vector3(sphere.transform.position.x, sphere.transform.position.y, sphere.transform.position.z))
  28. //};
  29. var calibrationVectors = new List<Tuple<Vector3, Vector3>> {
  30. new Tuple<Vector3, Vector3>( new Vector3(-0.5225359f, -2.012292f, 3.934204f), new Vector3(cylinderUL.transform.position.x, cylinderUL.transform.position.y, cylinderUL.transform.position.z) ),
  31. new Tuple<Vector3, Vector3>(new Vector3(2.538264f, -2.015675f, 2.318164f), new Vector3(cylinderUR.transform.position.x, cylinderUR.transform.position.y, cylinderUR.transform.position.z)),
  32. new Tuple<Vector3, Vector3>(new Vector3(-1.551626f, -1.86093f, 2.275376f), new Vector3(cylinderDR.transform.position.x, cylinderDR.transform.position.y, cylinderDR.transform.position.z)),
  33. new Tuple<Vector3, Vector3>(new Vector3(-1.095514f, -1.981828f, 2.849167f), new Vector3(cylinderDL.transform.position.x, cylinderDL.transform.position.y, cylinderDL.transform.position.z)),
  34. new Tuple<Vector3, Vector3>(new Vector3(0.6326299f, -1.908295f, 2.349819f), new Vector3(sphere.transform.position.x, sphere.transform.position.y, sphere.transform.position.z))
  35. };
  36. var positionCalculator = new PositionCalculator(calibrationVectors);
  37. Persons = new ObservableCollection<Person>();
  38. personDetector = new ZedPersonDetector(FindObjectOfType<ZEDManager>(), positionCalculator);
  39. personDetector.PersonsDetected += PersonDetector_PersonsDetected;
  40. }
  41. private void PersonDetector_PersonsDetected(object sender, IEnumerable<Person> e)
  42. {
  43. Persons.Clear();
  44. foreach (var person in e)
  45. {
  46. Persons.Add(person);
  47. }
  48. }
  49. void Update()
  50. {
  51. }
  52. }