private float m_xm, m_ym; // mean point #endregion Fields #region Constructors public DemoObjectLink(Viewer viewer, DemoObject from, DemoObject to, int nFingers) { m_viewer = viewer; m_fromObject = from; m_toObject = to; m_nFingers = nFingers; Update(); from.Links.Add(this); to.Links.Add(this); }
private DemoObjectLink MakeLink(DemoObject from, DemoObject to, int n) { if (m_currentTuioObjects.Contains(from) && m_currentTuioObjects.Contains(to)) return new DemoObjectLink(m_viewer, from, to, n); else return null; }
public void OpenLinkRequest(int channel, DemoObject demoObject) { lock (s_lock) { if (!m_linkRequests.ContainsKey(channel)) m_linkRequests[channel] = new List<DemoObject>(); // this is asynchronous, so for efficiency the link will be actually added later DemoObjectLink link; foreach (DemoObject req in m_linkRequests[channel]) { link = MakeLink(req, demoObject, channel); if (link != null) m_links.Add(link); } m_linkRequests[channel].Add(demoObject); } }
public void refresh(long timestamp) { lock (s_lock) { foreach (TuioObject o in m_tuioObjectAddedList) { DemoObject demoObject = new DemoObject(this, m_viewer, (int)o.getSessionID(), (o.getX() + OFFSET_X) * Settings.InputDevResolutionRatio, o.getY(), o.getAngle()); m_idDemoObjectTable[o.getSessionID()] = demoObject; m_currentTuioObjects.Add(demoObject); m_currentSelectable.Add(demoObject); } foreach (TuioObject o in m_tuioObjectUpdatedList) { m_idDemoObjectTable[o.getSessionID()].Update((o.getX() + OFFSET_X) * Settings.InputDevResolutionRatio, o.getY(), o.getAngle()); } foreach (TuioObject o in m_tuioObjectRemovedList) { DemoObject demoObject = m_idDemoObjectTable[o.getSessionID()]; demoObject.Remove((o.getX() + OFFSET_X) * Settings.InputDevResolutionRatio, o.getY(), o.getAngle()); m_idDemoObjectTable.Remove(o.getSessionID()); m_currentTuioObjects.Remove(demoObject); m_currentSelectable.Remove(demoObject); foreach (DemoObjectLink link in demoObject.Links) m_links.Remove(link); } foreach (DemoObjectLink link in m_links) link.Update(); } m_tuioObjectAddedList.Clear(); m_tuioObjectUpdatedList.Clear(); m_tuioObjectRemovedList.Clear(); }
public void CloseLinkRequest(int channel, DemoObject demoObject) { lock (s_lock) { m_linkRequests[channel].Remove(demoObject); } }