1+ using UniRx ;
2+ using VRTK ;
3+
4+ namespace RxVRTK
5+ {
6+ public class RxVRTK_InteractableObject : VRTK_InteractableObject
7+ {
8+ #region StartTouching
9+
10+ Subject < VRTK_InteractTouch > onStartTouching ;
11+
12+ public override void StartTouching ( VRTK_InteractTouch currentTouchingObject = null )
13+ {
14+ base . StartTouching ( currentTouchingObject ) ;
15+ if ( onStartTouching != null ) onStartTouching . OnNext ( currentTouchingObject ) ;
16+ }
17+
18+ /// <summary>
19+ /// Observable StartTouching event
20+ /// </summary>
21+ /// <returns></returns>
22+ public IObservable < VRTK_InteractTouch > StartTouchingAsObservable ( )
23+ {
24+ return onStartTouching ?? ( onStartTouching = new Subject < VRTK_InteractTouch > ( ) ) ;
25+ }
26+
27+ #endregion
28+
29+
30+ #region StopTouching
31+
32+ Subject < VRTK_InteractTouch > onStopTouching ;
33+
34+ public override void StopTouching ( VRTK_InteractTouch currentTouchingObject = null )
35+ {
36+ base . StopTouching ( currentTouchingObject ) ;
37+ if ( onStopTouching != null ) onStopTouching . OnNext ( currentTouchingObject ) ;
38+ }
39+
40+ /// <summary>
41+ /// Observable StopTouching event
42+ /// </summary>
43+ /// <returns></returns>
44+ public IObservable < VRTK_InteractTouch > StopTouchingAsObservable ( )
45+ {
46+ return onStopTouching ?? ( onStopTouching = new Subject < VRTK_InteractTouch > ( ) ) ;
47+ }
48+
49+ #endregion
50+
51+
52+ #region Grabbed
53+
54+ Subject < VRTK_InteractGrab > onGrabbed ;
55+
56+ public override void Grabbed ( VRTK_InteractGrab currentTouchingObject = null )
57+ {
58+ base . Grabbed ( currentTouchingObject ) ;
59+ if ( onGrabbed != null ) onGrabbed . OnNext ( currentTouchingObject ) ;
60+ }
61+
62+ /// <summary>
63+ /// Observable Grabbed event
64+ /// </summary>
65+ /// <returns></returns>
66+ public IObservable < VRTK_InteractGrab > GrabbedAsObservable ( )
67+ {
68+ return onGrabbed ?? ( onGrabbed = new Subject < VRTK_InteractGrab > ( ) ) ;
69+ }
70+
71+ #endregion
72+
73+
74+ #region Ungrabbed
75+
76+ Subject < VRTK_InteractGrab > onUngrabbed ;
77+
78+ public override void Ungrabbed ( VRTK_InteractGrab currentTouchingObject = null )
79+ {
80+ base . Ungrabbed ( currentTouchingObject ) ;
81+ if ( onUngrabbed != null ) onUngrabbed . OnNext ( currentTouchingObject ) ;
82+ }
83+
84+ /// <summary>
85+ /// Observable Ungrabbed event
86+ /// </summary>
87+ /// <returns></returns>
88+ public IObservable < VRTK_InteractGrab > UngrabbedAsObservable ( )
89+ {
90+ return onUngrabbed ?? ( onUngrabbed = new Subject < VRTK_InteractGrab > ( ) ) ;
91+ }
92+
93+ #endregion
94+
95+
96+ #region StartUsing
97+
98+ Subject < VRTK_InteractUse > onStartUsing ;
99+
100+ public override void StartUsing ( VRTK_InteractUse currentTouchingObject = null )
101+ {
102+ base . StartUsing ( currentTouchingObject ) ;
103+ if ( onStartUsing != null ) onStartUsing . OnNext ( currentTouchingObject ) ;
104+ }
105+
106+ /// <summary>
107+ /// Observable StartUsing event
108+ /// </summary>
109+ /// <returns></returns>
110+ public IObservable < VRTK_InteractUse > StartUsingAsObservable ( )
111+ {
112+ return onStartUsing ?? ( onStartUsing = new Subject < VRTK_InteractUse > ( ) ) ;
113+ }
114+
115+ #endregion
116+
117+
118+ #region StopUsing
119+
120+ Subject < VRTK_InteractUse > onStopUsing ;
121+
122+ public override void StopUsing ( VRTK_InteractUse currentTouchingObject = null )
123+ {
124+ base . StopUsing ( currentTouchingObject ) ;
125+ if ( onStopUsing != null ) onStopUsing . OnNext ( currentTouchingObject ) ;
126+ }
127+
128+ /// <summary>
129+ /// Observable StopUsing event
130+ /// </summary>
131+ /// <returns></returns>
132+ public IObservable < VRTK_InteractUse > StopUsingAsObservable ( )
133+ {
134+ return onStopUsing ?? ( onStopUsing = new Subject < VRTK_InteractUse > ( ) ) ;
135+ }
136+
137+ #endregion
138+
139+
140+ void OnDestroy ( )
141+ {
142+ if ( onStartTouching != null )
143+ {
144+ onStartTouching . OnCompleted ( ) ;
145+ }
146+
147+ if ( onStopTouching != null )
148+ {
149+ onStopTouching . OnCompleted ( ) ;
150+ }
151+
152+ if ( onGrabbed != null )
153+ {
154+ onGrabbed . OnCompleted ( ) ;
155+ }
156+
157+ if ( onUngrabbed != null )
158+ {
159+ onUngrabbed . OnCompleted ( ) ;
160+ }
161+
162+ if ( onStartUsing != null )
163+ {
164+ onStartUsing . OnCompleted ( ) ;
165+ }
166+
167+ if ( onStopUsing != null )
168+ {
169+ onStopUsing . OnCompleted ( ) ;
170+ }
171+ }
172+ }
173+ }
0 commit comments