1 package net.sf.josceleton.core.api.entity;
2
3 /**
4 * Represents OSC addresses used for user related messages sent by OSCeleton.
5 *
6 * @since 0.1
7 */
8 public enum UserState {
9
10 /**
11 * Represents the message sent for address <code>/new_user</code>.
12 *
13 * Indicates OSCeleton is currently waiting to identify skeleton by detecting a PSI-position.
14 *
15 * @since 0.1
16 */
17 WAITING { @Override public <T> T callback(final UserStateFunction<T> callee) {
18 return callee.onStateWaiting();
19 }},
20
21 /**
22 * Represents the message sent for address <code>/new_skel</code>.
23 *
24 * Indicating that skeleton data will now be processed.
25 *
26 * @since 0.1
27 */
28 PROCESSING { @Override public <T> T callback(final UserStateFunction<T> callee) {
29 return callee.onStateProcessing();
30 }},
31
32 /**
33 * Represents the message sent for address <code>/lost_user</code>.
34 *
35 * Indicates OSCeleton lost track of a user.
36 *
37 * @since 0.1
38 */
39 DEAD { @Override public <T> T callback(final UserStateFunction<T> callee) {
40 return callee.onStateDead();
41 }};
42
43 /**
44 * @since 0.3
45 */
46 public abstract <T> T callback(UserStateFunction<T> callee);
47 }