PageRenderTime 47ms CodeModel.GetById 17ms RepoModel.GetById 0ms app.codeStats 0ms

/nodejs_examples/src/org/as3openni/flash/openni/sockets/FLONIUserTrackingSocket.as

http://as3openni.googlecode.com/
ActionScript | 272 lines | 223 code | 40 blank | 9 comment | 16 complexity | 9d8a719514f057e33e372957e8acdaaa MD5 | raw file
Possible License(s): GPL-2.0
  1. package org.as3openni.flash.openni.sockets
  2. {
  3. import flash.events.ProgressEvent;
  4. import org.as3openni.flash.objects.NiPoint3D;
  5. import org.as3openni.flash.objects.NiSkeleton;
  6. import org.as3openni.flash.openni.events.ONISkeletonEvent;
  7. import org.as3openni.flash.openni.events.ONIUserTrackingEvent;
  8. import org.as3openni.flash.util.FLBasicSocket;
  9. public class FLONIUserTrackingSocket extends FLBasicSocket
  10. {
  11. public static const OPEN_NI_USER_TRACKING_SOCKET:String = "open_ni_user_tracking_socket";
  12. public function FLONIUserTrackingSocket()
  13. {
  14. super();
  15. this.name = OPEN_NI_USER_TRACKING_SOCKET;
  16. this.port = 9503;
  17. }
  18. override protected function onClientSocketData(event:ProgressEvent):void
  19. {
  20. super.onClientSocketData(event);
  21. if(this.socketMessage.length > 0)
  22. {
  23. // Detect for new user.
  24. if(this.socketMessage.substr(0, ONIUserTrackingEvent.USER_TRACKING_NEW_USER.length) == ONIUserTrackingEvent.USER_TRACKING_NEW_USER)
  25. {
  26. var arr1:Array = this.socketMessage.split(':');
  27. var newUser:Number = Number(arr1[1]);
  28. this.dispatchEvent(new ONIUserTrackingEvent(ONIUserTrackingEvent.USER_TRACKING_NEW_USER, newUser));
  29. }
  30. // Detect for lost user.
  31. if(this.socketMessage.substr(0, ONIUserTrackingEvent.USER_TRACKING_LOST_USER.length) == ONIUserTrackingEvent.USER_TRACKING_LOST_USER)
  32. {
  33. var arr2:Array = this.socketMessage.split(':');
  34. var lostUser:Number = Number(arr2[1]);
  35. this.dispatchEvent(new ONIUserTrackingEvent(ONIUserTrackingEvent.USER_TRACKING_LOST_USER, lostUser));
  36. }
  37. // Detect for user pose detected.
  38. if(this.socketMessage.substr(0, ONIUserTrackingEvent.USER_TRACKING_POSE_DETECTED.length) == ONIUserTrackingEvent.USER_TRACKING_POSE_DETECTED)
  39. {
  40. var arr3:Array = this.socketMessage.split(':');
  41. var poseDetectedUser:Number = Number(arr3[1]);
  42. this.dispatchEvent(new ONIUserTrackingEvent(ONIUserTrackingEvent.USER_TRACKING_POSE_DETECTED, poseDetectedUser));
  43. }
  44. // Detect for user calibration started.
  45. if(this.socketMessage.substr(0, ONIUserTrackingEvent.USER_TRACKING_USER_CALIBRATION_START.length) == ONIUserTrackingEvent.USER_TRACKING_USER_CALIBRATION_START)
  46. {
  47. var arr4:Array = this.socketMessage.split(':');
  48. var userCalStart:Number = Number(arr4[1]);
  49. this.dispatchEvent(new ONIUserTrackingEvent(ONIUserTrackingEvent.USER_TRACKING_USER_CALIBRATION_START, userCalStart));
  50. }
  51. // Detect for user calibration completed.
  52. if(this.socketMessage.substr(0, ONIUserTrackingEvent.USER_TRACKING_USER_CALIBRATION_COMPLETE.length) == ONIUserTrackingEvent.USER_TRACKING_USER_CALIBRATION_COMPLETE)
  53. {
  54. var arr5:Array = this.socketMessage.split(':');
  55. var userCalComplete:Number = Number(arr5[1]);
  56. this.dispatchEvent(new ONIUserTrackingEvent(ONIUserTrackingEvent.USER_TRACKING_USER_CALIBRATION_COMPLETE, userCalComplete));
  57. }
  58. // Detect for user calibration failed.
  59. if(this.socketMessage.substr(0, ONIUserTrackingEvent.USER_TRACKING_USER_CALIBRATION_FAILED.length) == ONIUserTrackingEvent.USER_TRACKING_USER_CALIBRATION_FAILED)
  60. {
  61. var arr6:Array = this.socketMessage.split(':');
  62. var userCalFailed:Number = Number(arr6[1]);
  63. this.dispatchEvent(new ONIUserTrackingEvent(ONIUserTrackingEvent.USER_TRACKING_USER_CALIBRATION_FAILED, userCalFailed));
  64. }
  65. // Detect for user tracking skeleton.
  66. if(this.socketMessage.substr(0, ONISkeletonEvent.USER_TRACKING.length) == ONISkeletonEvent.USER_TRACKING)
  67. {
  68. var arr7:Array = this.socketMessage.split(':');
  69. var dataStr:String = String(arr7[1]);
  70. var points:Array = dataStr.split(',');
  71. var user:Number = Number(points[1]);
  72. var skeleton:NiSkeleton = new NiSkeleton();
  73. var head:NiPoint3D = new NiPoint3D();
  74. var neck:NiPoint3D = new NiPoint3D();
  75. var torso:NiPoint3D = new NiPoint3D();
  76. var leftBigHand:NiPoint3D = new NiPoint3D();
  77. var rightBigHand:NiPoint3D = new NiPoint3D();
  78. var leftShoulder:NiPoint3D = new NiPoint3D();
  79. var leftElbow:NiPoint3D = new NiPoint3D();
  80. var leftHand:NiPoint3D = new NiPoint3D();
  81. var rightShoulder:NiPoint3D = new NiPoint3D();
  82. var rightElbow:NiPoint3D = new NiPoint3D();
  83. var rightHand:NiPoint3D = new NiPoint3D();
  84. var leftHip:NiPoint3D = new NiPoint3D();
  85. var leftKnee:NiPoint3D = new NiPoint3D();
  86. var leftFoot:NiPoint3D = new NiPoint3D();
  87. var rightHip:NiPoint3D = new NiPoint3D();
  88. var rightKnee:NiPoint3D = new NiPoint3D();
  89. var rightFoot:NiPoint3D = new NiPoint3D();
  90. for(var i:Number = 0; i < points.length; i++)
  91. {
  92. var val:String = points[i] as String;
  93. switch(val)
  94. {
  95. case 'head':
  96. head.user = user;
  97. head.pointX = Number(points[i+1]);
  98. head.pointY = Number(points[i+2]);
  99. head.pointZ = Number(points[i+3]);
  100. break;
  101. case 'neck':
  102. neck.user = user;
  103. neck.pointX = Number(points[i+1]);
  104. neck.pointY = Number(points[i+2]);
  105. neck.pointZ = Number(points[i+3]);
  106. break;
  107. case 'torso':
  108. torso.user = user;
  109. torso.pointX = Number(points[i+1]);
  110. torso.pointY = Number(points[i+2]);
  111. torso.pointZ = Number(points[i+3]);
  112. break;
  113. case 'left_big_hand':
  114. leftBigHand.user = user;
  115. leftBigHand.pointX = Number(points[i+1]);
  116. leftBigHand.pointY = Number(points[i+2]);
  117. leftBigHand.pointZ = Number(points[i+3]);
  118. break;
  119. case 'right_big_hand':
  120. rightBigHand.user = user;
  121. rightBigHand.pointX = Number(points[i+1]);
  122. rightBigHand.pointY = Number(points[i+2]);
  123. rightBigHand.pointZ = Number(points[i+3]);
  124. break;
  125. case 'left_shoulder':
  126. leftShoulder.user = user;
  127. leftShoulder.pointX = Number(points[i+1]);
  128. leftShoulder.pointY = Number(points[i+2]);
  129. leftShoulder.pointZ = Number(points[i+3]);
  130. break;
  131. case 'left_elbow':
  132. leftElbow.user = user;
  133. leftElbow.pointX = Number(points[i+1]);
  134. leftElbow.pointY = Number(points[i+2]);
  135. leftElbow.pointZ = Number(points[i+3]);
  136. break;
  137. case 'left_hand':
  138. leftHand.user = user;
  139. leftHand.pointX = Number(points[i+1]);
  140. leftHand.pointY = Number(points[i+2]);
  141. leftHand.pointZ = Number(points[i+3]);
  142. break;
  143. case 'right_shoulder':
  144. rightShoulder.user = user;
  145. rightShoulder.pointX = Number(points[i+1]);
  146. rightShoulder.pointY = Number(points[i+2]);
  147. rightShoulder.pointZ = Number(points[i+3]);
  148. break;
  149. case 'right_elbow':
  150. rightElbow.user = user;
  151. rightElbow.pointX = Number(points[i+1]);
  152. rightElbow.pointY = Number(points[i+2]);
  153. rightElbow.pointZ = Number(points[i+3]);
  154. break;
  155. case 'right_hand':
  156. rightHand.user = user;
  157. rightHand.pointX = Number(points[i+1]);
  158. rightHand.pointY = Number(points[i+2]);
  159. rightHand.pointZ = Number(points[i+3]);
  160. break;
  161. case 'left_hip':
  162. leftHip.user = user;
  163. leftHip.pointX = Number(points[i+1]);
  164. leftHip.pointY = Number(points[i+2]);
  165. leftHip.pointZ = Number(points[i+3]);
  166. break;
  167. case 'left_knee':
  168. leftKnee.user = user;
  169. leftKnee.pointX = Number(points[i+1]);
  170. leftKnee.pointY = Number(points[i+2]);
  171. leftKnee.pointZ = Number(points[i+3]);
  172. break;
  173. case 'left_foot':
  174. leftFoot.user = user;
  175. leftFoot.pointX = Number(points[i+1]);
  176. leftFoot.pointY = Number(points[i+2]);
  177. leftFoot.pointZ = Number(points[i+3]);
  178. break;
  179. case 'right_hip':
  180. rightHip.user = user;
  181. rightHip.pointX = Number(points[i+1]);
  182. rightHip.pointY = Number(points[i+2]);
  183. rightHip.pointZ = Number(points[i+3]);
  184. break;
  185. case 'right_knee':
  186. rightKnee.user = user;
  187. rightKnee.pointX = Number(points[i+1]);
  188. rightKnee.pointY = Number(points[i+2]);
  189. rightKnee.pointZ = Number(points[i+3]);
  190. break;
  191. case 'right_foot':
  192. rightFoot.user = user;
  193. rightFoot.pointX = Number(points[i+1]);
  194. rightFoot.pointY = Number(points[i+2]);
  195. rightFoot.pointZ = Number(points[i+3]);
  196. break;
  197. }
  198. }
  199. // Populate the skeleton object.
  200. skeleton.user = user;
  201. skeleton.head = head;
  202. skeleton.neck = neck;
  203. skeleton.torso = torso;
  204. skeleton.leftShoulder = leftShoulder;
  205. skeleton.leftElbow = leftElbow;
  206. skeleton.leftHand = leftHand;
  207. skeleton.rightShoulder = rightShoulder;
  208. skeleton.rightElbow = rightElbow;
  209. skeleton.rightHand = rightHand;
  210. skeleton.leftHip = leftHip;
  211. skeleton.leftKnee = leftKnee;
  212. skeleton.leftFoot = leftFoot;
  213. skeleton.rightHip = rightHip;
  214. skeleton.rightKnee = rightKnee;
  215. skeleton.rightFoot = rightFoot;
  216. // Then dispatch the user tracking event out.
  217. this.dispatchEvent
  218. (
  219. new ONISkeletonEvent
  220. (
  221. ONISkeletonEvent.USER_TRACKING,
  222. user,
  223. leftBigHand,
  224. rightBigHand,
  225. skeleton
  226. )
  227. );
  228. }
  229. }
  230. }
  231. }
  232. }