Ponieważ znamy już węzeł Anchor zajmijmy się teraz węzłem TouchSensor. Pełny opis tego węzła wygląda następująco:
TouchSensor {
exposedField SFBool enabled
TRUE
eventOut SFVec3f hitNormal_changed
eventOut SFVec3f hitPoint_changed
eventOut SFVec2f hitTexCoord_changed
eventOut SFBool isActive
eventOut SFBool isOver
eventOut SFTime touchTime
}
Jak widać węzeł TouchSensor jest dosyć specyficznym węzłem - można go nazwać "workiem ze zdarzeniami". Posiada on tylko jedno pole exposedField, czyli takie, które może jednocześnie przyjmować i wysyłać zdarzenie typu SFBool. Pole enabled służy jedynie do uaktywniania (TRUE) lub dezaktywowania (FALSE) działalności węzła TouchSensor. W momencie gdy pole enabled będzie miało wartość TRUE i użytkownik kliknie na aktywny obiekt (lub najedzie na niego kursorem myszy) wysyłane zostają pozostałe zdarzenia. Poniżej przedstawię kolejność wysyłania tych zdarzeń.
Zdarzenie isOver odzwierciedla stan kursora myszki niezależnie od tego czy wskazuje on na obiekt otoczony działaniem węzła TouchSensor czy nie. Jeżeli użytkownik przesunie kursor z miejsca nie aktywnego w aktywne zdarzenie isOver wysyła wartość TRUE. W momencie gdy użytkownik wykona operację odwrotną zdarzenie isOver wysyła wartość FALSE. Zdarzenie to wysyłane jest tylko wtedy gdy to kursor zmieni położenie wobec obiektu a nie obiekt wobec kursora, np.: w momencie gdy obiekt aktywny na dotyk animuje i przez przypadek "najedzie" na kursor.
W momencie gdy zdarzenie isOver wysyła wartość TRUE zostają wysyłane również zdarzenia hitPoint_changed, hitNormal_changed i hitTexCoord_changed. Wartość wysyłana wraz ze zdarzeniem hitPoint_changed typu SFVec3f zawiera definicję punktu (x, y, z) na powierzchni obiektu objętego działaniem węzła TouchSensor. Zdarzenie hitNormal_changed wysyła informację o wektorze prostopadłym do aktywnej powierzchni stykający się z powierzchnią w punkcie wyznaczonym przez zdarzenie hitPoint_changed. Natomiast zdarzenie hitTexCoord_changed typu SFVec2f zawiera informację o współrzędnych tekstury nałożonej na obiekt aktywny od punktu wyznaczonego przez zdarzenie hitPoint_changed.
Jeśli zdarzenie isOver ma wartość TRUE kliknięcie klawiszem myszki spowoduje wysłanie zdarzenia isActive o wartości TRUE. Kiedy klikniemy i przytrzymamy klawisz myszki zdarzenie isActive spowoduje, że na czas przytrzymania klawisza myszka zostanie wyłączona z innych zadań aż do czasu gdy klawisz zostanie puszczony.
Zdarzenie touchTime jest wysyłane w momencie gdy trzy poniższe warunki zostaną spełnione: