blacktrigram 0.7.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1853) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +866 -0
  3. package/SECURITY.md +124 -0
  4. package/lib/App.d.ts +4 -0
  5. package/lib/App.d.ts.map +1 -0
  6. package/lib/App2.js +386 -0
  7. package/lib/App2.js.map +1 -0
  8. package/lib/_virtual/_rolldown/runtime.js +13 -0
  9. package/lib/assets/index.css +1146 -0
  10. package/lib/audio/AudioAssetLoader.d.ts +101 -0
  11. package/lib/audio/AudioAssetLoader.d.ts.map +1 -0
  12. package/lib/audio/AudioAssetLoader.js +245 -0
  13. package/lib/audio/AudioAssetLoader.js.map +1 -0
  14. package/lib/audio/AudioAssetRegistry.d.ts +126 -0
  15. package/lib/audio/AudioAssetRegistry.d.ts.map +1 -0
  16. package/lib/audio/AudioAssetRegistry.js +970 -0
  17. package/lib/audio/AudioAssetRegistry.js.map +1 -0
  18. package/lib/audio/AudioCache.d.ts +135 -0
  19. package/lib/audio/AudioCache.d.ts.map +1 -0
  20. package/lib/audio/AudioCache.js +211 -0
  21. package/lib/audio/AudioCache.js.map +1 -0
  22. package/lib/audio/AudioManager.d.ts +162 -0
  23. package/lib/audio/AudioManager.d.ts.map +1 -0
  24. package/lib/audio/AudioManager.js +508 -0
  25. package/lib/audio/AudioManager.js.map +1 -0
  26. package/lib/audio/AudioMonitor.d.ts +122 -0
  27. package/lib/audio/AudioMonitor.d.ts.map +1 -0
  28. package/lib/audio/AudioMonitor.js +215 -0
  29. package/lib/audio/AudioMonitor.js.map +1 -0
  30. package/lib/audio/AudioPool.d.ts +108 -0
  31. package/lib/audio/AudioPool.d.ts.map +1 -0
  32. package/lib/audio/AudioPool.js +206 -0
  33. package/lib/audio/AudioPool.js.map +1 -0
  34. package/lib/audio/AudioProvider.d.ts +28 -0
  35. package/lib/audio/AudioProvider.d.ts.map +1 -0
  36. package/lib/audio/AudioProvider.js +135 -0
  37. package/lib/audio/AudioProvider.js.map +1 -0
  38. package/lib/audio/AudioUtils.d.ts +77 -0
  39. package/lib/audio/AudioUtils.d.ts.map +1 -0
  40. package/lib/audio/AudioUtils.js +164 -0
  41. package/lib/audio/AudioUtils.js.map +1 -0
  42. package/lib/audio/BoneImpactAudioMap.d.ts +64 -0
  43. package/lib/audio/BoneImpactAudioMap.d.ts.map +1 -0
  44. package/lib/audio/BoneImpactAudioMap.js +133 -0
  45. package/lib/audio/BoneImpactAudioMap.js.map +1 -0
  46. package/lib/audio/VariantSelector.d.ts +69 -0
  47. package/lib/audio/VariantSelector.d.ts.map +1 -0
  48. package/lib/audio/VariantSelector.js +177 -0
  49. package/lib/audio/VariantSelector.js.map +1 -0
  50. package/lib/audio/index.d.ts +13 -0
  51. package/lib/audio/index.d.ts.map +1 -0
  52. package/lib/audio/index.js +41 -0
  53. package/lib/audio/index.js.map +1 -0
  54. package/lib/audio/types.d.ts +220 -0
  55. package/lib/audio/types.d.ts.map +1 -0
  56. package/lib/audio/types.js +12 -0
  57. package/lib/audio/types.js.map +1 -0
  58. package/lib/components/effects/WindParticles3D.d.ts +83 -0
  59. package/lib/components/effects/WindParticles3D.d.ts.map +1 -0
  60. package/lib/components/effects/index.d.ts +6 -0
  61. package/lib/components/effects/index.d.ts.map +1 -0
  62. package/lib/components/index.d.ts +5 -0
  63. package/lib/components/index.d.ts.map +1 -0
  64. package/lib/components/index.js +74 -0
  65. package/lib/components/index.js.map +1 -0
  66. package/lib/components/screens/combat/CombatScreen3D.d.ts +74 -0
  67. package/lib/components/screens/combat/CombatScreen3D.d.ts.map +1 -0
  68. package/lib/components/screens/combat/CombatScreen3D.js +1912 -0
  69. package/lib/components/screens/combat/CombatScreen3D.js.map +1 -0
  70. package/lib/components/screens/combat/components/controls/CombatButtons.d.ts +39 -0
  71. package/lib/components/screens/combat/components/controls/CombatButtons.d.ts.map +1 -0
  72. package/lib/components/screens/combat/components/controls/CombatButtons.js +52 -0
  73. package/lib/components/screens/combat/components/controls/CombatButtons.js.map +1 -0
  74. package/lib/components/screens/combat/components/controls/CombatControlsPanel.d.ts +35 -0
  75. package/lib/components/screens/combat/components/controls/CombatControlsPanel.d.ts.map +1 -0
  76. package/lib/components/screens/combat/components/controls/CombatControlsPanel.js +78 -0
  77. package/lib/components/screens/combat/components/controls/CombatControlsPanel.js.map +1 -0
  78. package/lib/components/screens/combat/components/controls/ControlsGuide.d.ts +23 -0
  79. package/lib/components/screens/combat/components/controls/ControlsGuide.d.ts.map +1 -0
  80. package/lib/components/screens/combat/components/controls/ControlsGuide.js +214 -0
  81. package/lib/components/screens/combat/components/controls/ControlsGuide.js.map +1 -0
  82. package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts +54 -0
  83. package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts.map +1 -0
  84. package/lib/components/screens/combat/components/controls/KeyboardHints.js +357 -0
  85. package/lib/components/screens/combat/components/controls/KeyboardHints.js.map +1 -0
  86. package/lib/components/screens/combat/components/controls/PauseMenu.d.ts +32 -0
  87. package/lib/components/screens/combat/components/controls/PauseMenu.d.ts.map +1 -0
  88. package/lib/components/screens/combat/components/controls/PauseMenu.js +254 -0
  89. package/lib/components/screens/combat/components/controls/PauseMenu.js.map +1 -0
  90. package/lib/components/screens/combat/components/controls/PauseMenuButton.d.ts +63 -0
  91. package/lib/components/screens/combat/components/controls/PauseMenuButton.d.ts.map +1 -0
  92. package/lib/components/screens/combat/components/controls/PauseMenuButton.js +108 -0
  93. package/lib/components/screens/combat/components/controls/PauseMenuButton.js.map +1 -0
  94. package/lib/components/screens/combat/components/controls/QuickSettings.d.ts +42 -0
  95. package/lib/components/screens/combat/components/controls/QuickSettings.d.ts.map +1 -0
  96. package/lib/components/screens/combat/components/controls/QuickSettings.js +259 -0
  97. package/lib/components/screens/combat/components/controls/QuickSettings.js.map +1 -0
  98. package/lib/components/screens/combat/components/effects/ArterialSpray3D.d.ts +73 -0
  99. package/lib/components/screens/combat/components/effects/ArterialSpray3D.d.ts.map +1 -0
  100. package/lib/components/screens/combat/components/effects/BloodDecals3D.d.ts +108 -0
  101. package/lib/components/screens/combat/components/effects/BloodDecals3D.d.ts.map +1 -0
  102. package/lib/components/screens/combat/components/effects/BloodDecals3D.js +232 -0
  103. package/lib/components/screens/combat/components/effects/BloodDecals3D.js.map +1 -0
  104. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.d.ts +53 -0
  105. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.d.ts.map +1 -0
  106. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js +87 -0
  107. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js.map +1 -0
  108. package/lib/components/screens/combat/components/effects/BloodParticles3D.d.ts +80 -0
  109. package/lib/components/screens/combat/components/effects/BloodParticles3D.d.ts.map +1 -0
  110. package/lib/components/screens/combat/components/effects/BloodParticles3D.js +278 -0
  111. package/lib/components/screens/combat/components/effects/BloodParticles3D.js.map +1 -0
  112. package/lib/components/screens/combat/components/effects/BloodViscosity3D.d.ts +64 -0
  113. package/lib/components/screens/combat/components/effects/BloodViscosity3D.d.ts.map +1 -0
  114. package/lib/components/screens/combat/components/effects/BloodViscosity3D.js +248 -0
  115. package/lib/components/screens/combat/components/effects/BloodViscosity3D.js.map +1 -0
  116. package/lib/components/screens/combat/components/effects/BoneCrackParticles3D.d.ts +60 -0
  117. package/lib/components/screens/combat/components/effects/BoneCrackParticles3D.d.ts.map +1 -0
  118. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.d.ts +37 -0
  119. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.d.ts.map +1 -0
  120. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js +184 -0
  121. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js.map +1 -0
  122. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.d.ts +49 -0
  123. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.d.ts.map +1 -0
  124. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js +66 -0
  125. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js.map +1 -0
  126. package/lib/components/screens/combat/components/effects/DustClouds3D.d.ts +93 -0
  127. package/lib/components/screens/combat/components/effects/DustClouds3D.d.ts.map +1 -0
  128. package/lib/components/screens/combat/components/effects/EarthCrackEffect3D.d.ts +57 -0
  129. package/lib/components/screens/combat/components/effects/EarthCrackEffect3D.d.ts.map +1 -0
  130. package/lib/components/screens/combat/components/effects/EarthHealingEffect3D.d.ts +88 -0
  131. package/lib/components/screens/combat/components/effects/EarthHealingEffect3D.d.ts.map +1 -0
  132. package/lib/components/screens/combat/components/effects/ImpactSparks3D.d.ts +91 -0
  133. package/lib/components/screens/combat/components/effects/ImpactSparks3D.d.ts.map +1 -0
  134. package/lib/components/screens/combat/components/effects/InternalDamage3D.d.ts +67 -0
  135. package/lib/components/screens/combat/components/effects/InternalDamage3D.d.ts.map +1 -0
  136. package/lib/components/screens/combat/components/effects/InternalDamage3D.js +261 -0
  137. package/lib/components/screens/combat/components/effects/InternalDamage3D.js.map +1 -0
  138. package/lib/components/screens/combat/components/effects/LiPrecisionTargetingOverlay.d.ts +45 -0
  139. package/lib/components/screens/combat/components/effects/LiPrecisionTargetingOverlay.d.ts.map +1 -0
  140. package/lib/components/screens/combat/components/effects/NerveStrikeParticles3D.d.ts +61 -0
  141. package/lib/components/screens/combat/components/effects/NerveStrikeParticles3D.d.ts.map +1 -0
  142. package/lib/components/screens/combat/components/effects/PainVignette.d.ts +47 -0
  143. package/lib/components/screens/combat/components/effects/PainVignette.d.ts.map +1 -0
  144. package/lib/components/screens/combat/components/effects/PainVignette.js +65 -0
  145. package/lib/components/screens/combat/components/effects/PainVignette.js.map +1 -0
  146. package/lib/components/screens/combat/components/effects/ParticleAudio3D.d.ts +52 -0
  147. package/lib/components/screens/combat/components/effects/ParticleAudio3D.d.ts.map +1 -0
  148. package/lib/components/screens/combat/components/effects/ParticleAudio3D.js +103 -0
  149. package/lib/components/screens/combat/components/effects/ParticleAudio3D.js.map +1 -0
  150. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.d.ts +91 -0
  151. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.d.ts.map +1 -0
  152. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js +296 -0
  153. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js.map +1 -0
  154. package/lib/components/screens/combat/components/effects/WaterRipple3D.d.ts +64 -0
  155. package/lib/components/screens/combat/components/effects/WaterRipple3D.d.ts.map +1 -0
  156. package/lib/components/screens/combat/components/effects/WaterWave3D.d.ts +72 -0
  157. package/lib/components/screens/combat/components/effects/WaterWave3D.d.ts.map +1 -0
  158. package/lib/components/screens/combat/components/effects/index.d.ts +121 -0
  159. package/lib/components/screens/combat/components/effects/index.d.ts.map +1 -0
  160. package/lib/components/screens/combat/components/feedback/MatchCountdown.d.ts +31 -0
  161. package/lib/components/screens/combat/components/feedback/MatchCountdown.d.ts.map +1 -0
  162. package/lib/components/screens/combat/components/feedback/MatchCountdown.js +242 -0
  163. package/lib/components/screens/combat/components/feedback/MatchCountdown.js.map +1 -0
  164. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.d.ts +74 -0
  165. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.d.ts.map +1 -0
  166. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js +275 -0
  167. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js.map +1 -0
  168. package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.d.ts +25 -0
  169. package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.d.ts.map +1 -0
  170. package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.js +61 -0
  171. package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.js.map +1 -0
  172. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.d.ts +43 -0
  173. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.d.ts.map +1 -0
  174. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js +139 -0
  175. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js.map +1 -0
  176. package/lib/components/screens/combat/components/hud/CombatBottomHUD.d.ts +50 -0
  177. package/lib/components/screens/combat/components/hud/CombatBottomHUD.d.ts.map +1 -0
  178. package/lib/components/screens/combat/components/hud/CombatBottomHUD.js +155 -0
  179. package/lib/components/screens/combat/components/hud/CombatBottomHUD.js.map +1 -0
  180. package/lib/components/screens/combat/components/hud/CombatLeftHUD.d.ts +54 -0
  181. package/lib/components/screens/combat/components/hud/CombatLeftHUD.d.ts.map +1 -0
  182. package/lib/components/screens/combat/components/hud/CombatLeftHUD.js +103 -0
  183. package/lib/components/screens/combat/components/hud/CombatLeftHUD.js.map +1 -0
  184. package/lib/components/screens/combat/components/hud/CombatRightHUD.d.ts +54 -0
  185. package/lib/components/screens/combat/components/hud/CombatRightHUD.d.ts.map +1 -0
  186. package/lib/components/screens/combat/components/hud/CombatRightHUD.js +101 -0
  187. package/lib/components/screens/combat/components/hud/CombatRightHUD.js.map +1 -0
  188. package/lib/components/screens/combat/components/hud/CombatTopHUD.d.ts +47 -0
  189. package/lib/components/screens/combat/components/hud/CombatTopHUD.d.ts.map +1 -0
  190. package/lib/components/screens/combat/components/hud/CombatTopHUD.js +141 -0
  191. package/lib/components/screens/combat/components/hud/CombatTopHUD.js.map +1 -0
  192. package/lib/components/screens/combat/components/hud/DifficultyIndicator.d.ts +25 -0
  193. package/lib/components/screens/combat/components/hud/DifficultyIndicator.d.ts.map +1 -0
  194. package/lib/components/screens/combat/components/hud/DifficultyIndicator.js +129 -0
  195. package/lib/components/screens/combat/components/hud/DifficultyIndicator.js.map +1 -0
  196. package/lib/components/screens/combat/components/hud/FPSMonitor.d.ts +48 -0
  197. package/lib/components/screens/combat/components/hud/FPSMonitor.d.ts.map +1 -0
  198. package/lib/components/screens/combat/components/hud/FPSMonitor.js +131 -0
  199. package/lib/components/screens/combat/components/hud/FPSMonitor.js.map +1 -0
  200. package/lib/components/screens/combat/components/hud/MobileControlsWrapper.d.ts +82 -0
  201. package/lib/components/screens/combat/components/hud/MobileControlsWrapper.d.ts.map +1 -0
  202. package/lib/components/screens/combat/components/hud/MobileControlsWrapper.js +73 -0
  203. package/lib/components/screens/combat/components/hud/MobileControlsWrapper.js.map +1 -0
  204. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.d.ts +80 -0
  205. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.d.ts.map +1 -0
  206. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js +79 -0
  207. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js.map +1 -0
  208. package/lib/components/screens/combat/components/hud/index.d.ts +22 -0
  209. package/lib/components/screens/combat/components/hud/index.d.ts.map +1 -0
  210. package/lib/components/screens/combat/components/hud/index.js +4 -0
  211. package/lib/components/screens/combat/components/index.d.ts +47 -0
  212. package/lib/components/screens/combat/components/index.d.ts.map +1 -0
  213. package/lib/components/screens/combat/components/index.js +23 -0
  214. package/lib/components/screens/combat/components/indicators/BalanceIndicator.d.ts +52 -0
  215. package/lib/components/screens/combat/components/indicators/BalanceIndicator.d.ts.map +1 -0
  216. package/lib/components/screens/combat/components/indicators/BalanceIndicator.js +113 -0
  217. package/lib/components/screens/combat/components/indicators/BalanceIndicator.js.map +1 -0
  218. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts +49 -0
  219. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts.map +1 -0
  220. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js +150 -0
  221. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js.map +1 -0
  222. package/lib/components/screens/combat/components/indicators/StaminaWarning.d.ts +44 -0
  223. package/lib/components/screens/combat/components/indicators/StaminaWarning.d.ts.map +1 -0
  224. package/lib/components/screens/combat/components/indicators/StaminaWarning.js +83 -0
  225. package/lib/components/screens/combat/components/indicators/StaminaWarning.js.map +1 -0
  226. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts +83 -0
  227. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts.map +1 -0
  228. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js +161 -0
  229. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js.map +1 -0
  230. package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts +38 -0
  231. package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts.map +1 -0
  232. package/lib/components/screens/combat/helpers/AnimationUpdater.js +37 -0
  233. package/lib/components/screens/combat/helpers/AnimationUpdater.js.map +1 -0
  234. package/lib/components/screens/combat/helpers/combatHelpers.d.ts +37 -0
  235. package/lib/components/screens/combat/helpers/combatHelpers.d.ts.map +1 -0
  236. package/lib/components/screens/combat/helpers/combatHelpers.js +33 -0
  237. package/lib/components/screens/combat/helpers/combatHelpers.js.map +1 -0
  238. package/lib/components/screens/combat/helpers/index.d.ts +8 -0
  239. package/lib/components/screens/combat/helpers/index.d.ts.map +1 -0
  240. package/lib/components/screens/combat/helpers/index.js +2 -0
  241. package/lib/components/screens/combat/hooks/useAICombat.d.ts +108 -0
  242. package/lib/components/screens/combat/hooks/useAICombat.d.ts.map +1 -0
  243. package/lib/components/screens/combat/hooks/useAICombat.js +806 -0
  244. package/lib/components/screens/combat/hooks/useAICombat.js.map +1 -0
  245. package/lib/components/screens/combat/hooks/useCombatActions.d.ts +106 -0
  246. package/lib/components/screens/combat/hooks/useCombatActions.d.ts.map +1 -0
  247. package/lib/components/screens/combat/hooks/useCombatActions.js +766 -0
  248. package/lib/components/screens/combat/hooks/useCombatActions.js.map +1 -0
  249. package/lib/components/screens/combat/hooks/useCombatAttackMovement.d.ts +85 -0
  250. package/lib/components/screens/combat/hooks/useCombatAttackMovement.d.ts.map +1 -0
  251. package/lib/components/screens/combat/hooks/useCombatAttackMovement.js +202 -0
  252. package/lib/components/screens/combat/hooks/useCombatAttackMovement.js.map +1 -0
  253. package/lib/components/screens/combat/hooks/useCombatAudio.d.ts +40 -0
  254. package/lib/components/screens/combat/hooks/useCombatAudio.d.ts.map +1 -0
  255. package/lib/components/screens/combat/hooks/useCombatAudio.js +287 -0
  256. package/lib/components/screens/combat/hooks/useCombatAudio.js.map +1 -0
  257. package/lib/components/screens/combat/hooks/useCombatLayout.d.ts +61 -0
  258. package/lib/components/screens/combat/hooks/useCombatLayout.d.ts.map +1 -0
  259. package/lib/components/screens/combat/hooks/useCombatLayout.js +89 -0
  260. package/lib/components/screens/combat/hooks/useCombatLayout.js.map +1 -0
  261. package/lib/components/screens/combat/hooks/useCombatState.d.ts +75 -0
  262. package/lib/components/screens/combat/hooks/useCombatState.d.ts.map +1 -0
  263. package/lib/components/screens/combat/hooks/useCombatState.js +182 -0
  264. package/lib/components/screens/combat/hooks/useCombatState.js.map +1 -0
  265. package/lib/components/screens/combat/hooks/useGrapplingAudio.d.ts +36 -0
  266. package/lib/components/screens/combat/hooks/useGrapplingAudio.d.ts.map +1 -0
  267. package/lib/components/screens/combat/hooks/usePreloadCombatAudio.d.ts +63 -0
  268. package/lib/components/screens/combat/hooks/usePreloadCombatAudio.d.ts.map +1 -0
  269. package/lib/components/screens/combat/index.d.ts +4 -0
  270. package/lib/components/screens/combat/index.d.ts.map +1 -0
  271. package/lib/components/screens/combat/index.js +25 -0
  272. package/lib/components/screens/controls/ControlsScreen3D.d.ts +12 -0
  273. package/lib/components/screens/controls/ControlsScreen3D.d.ts.map +1 -0
  274. package/lib/components/screens/controls/ControlsScreen3D.js +1248 -0
  275. package/lib/components/screens/controls/ControlsScreen3D.js.map +1 -0
  276. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.d.ts +35 -0
  277. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.d.ts.map +1 -0
  278. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js +155 -0
  279. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js.map +1 -0
  280. package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.d.ts +31 -0
  281. package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.d.ts.map +1 -0
  282. package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.js +100 -0
  283. package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.js.map +1 -0
  284. package/lib/components/screens/controls/components/GamepadVisualization3D.d.ts +32 -0
  285. package/lib/components/screens/controls/components/GamepadVisualization3D.d.ts.map +1 -0
  286. package/lib/components/screens/controls/components/GamepadVisualization3D.js +250 -0
  287. package/lib/components/screens/controls/components/GamepadVisualization3D.js.map +1 -0
  288. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.d.ts +35 -0
  289. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.d.ts.map +1 -0
  290. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js +222 -0
  291. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js.map +1 -0
  292. package/lib/components/screens/controls/components/Key3D.d.ts +36 -0
  293. package/lib/components/screens/controls/components/Key3D.d.ts.map +1 -0
  294. package/lib/components/screens/controls/components/Key3D.js +169 -0
  295. package/lib/components/screens/controls/components/Key3D.js.map +1 -0
  296. package/lib/components/screens/controls/components/VisualKeyboard3D.d.ts +37 -0
  297. package/lib/components/screens/controls/components/VisualKeyboard3D.d.ts.map +1 -0
  298. package/lib/components/screens/controls/components/VisualKeyboard3D.js +120 -0
  299. package/lib/components/screens/controls/components/VisualKeyboard3D.js.map +1 -0
  300. package/lib/components/screens/controls/components/index.d.ts +20 -0
  301. package/lib/components/screens/controls/components/index.d.ts.map +1 -0
  302. package/lib/components/screens/controls/constants/ControlsConstants.d.ts +67 -0
  303. package/lib/components/screens/controls/constants/ControlsConstants.d.ts.map +1 -0
  304. package/lib/components/screens/controls/constants/ControlsConstants.js +504 -0
  305. package/lib/components/screens/controls/constants/ControlsConstants.js.map +1 -0
  306. package/lib/components/screens/controls/hooks/useControlsState.d.ts +46 -0
  307. package/lib/components/screens/controls/hooks/useControlsState.d.ts.map +1 -0
  308. package/lib/components/screens/controls/hooks/useControlsState.js +71 -0
  309. package/lib/components/screens/controls/hooks/useControlsState.js.map +1 -0
  310. package/lib/components/screens/endscreen/EndScreen3D.d.ts +18 -0
  311. package/lib/components/screens/endscreen/EndScreen3D.d.ts.map +1 -0
  312. package/lib/components/screens/endscreen/EndScreen3D.js +367 -0
  313. package/lib/components/screens/endscreen/EndScreen3D.js.map +1 -0
  314. package/lib/components/screens/endscreen/components/DefeatAnimation3D.d.ts +9 -0
  315. package/lib/components/screens/endscreen/components/DefeatAnimation3D.d.ts.map +1 -0
  316. package/lib/components/screens/endscreen/components/DefeatAnimation3D.js +205 -0
  317. package/lib/components/screens/endscreen/components/DefeatAnimation3D.js.map +1 -0
  318. package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.d.ts +13 -0
  319. package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.d.ts.map +1 -0
  320. package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.js +321 -0
  321. package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.js.map +1 -0
  322. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.d.ts +28 -0
  323. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.d.ts.map +1 -0
  324. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js +93 -0
  325. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js.map +1 -0
  326. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.d.ts +13 -0
  327. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.d.ts.map +1 -0
  328. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js +294 -0
  329. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js.map +1 -0
  330. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.d.ts +13 -0
  331. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.d.ts.map +1 -0
  332. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js +210 -0
  333. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js.map +1 -0
  334. package/lib/components/screens/endscreen/components/VictoryAnimation3D.d.ts +9 -0
  335. package/lib/components/screens/endscreen/components/VictoryAnimation3D.d.ts.map +1 -0
  336. package/lib/components/screens/endscreen/components/VictoryAnimation3D.js +299 -0
  337. package/lib/components/screens/endscreen/components/VictoryAnimation3D.js.map +1 -0
  338. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.d.ts +14 -0
  339. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.d.ts.map +1 -0
  340. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js +170 -0
  341. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js.map +1 -0
  342. package/lib/components/screens/endscreen/components/animations.d.ts +25 -0
  343. package/lib/components/screens/endscreen/components/animations.d.ts.map +1 -0
  344. package/lib/components/screens/endscreen/components/animations.js +71 -0
  345. package/lib/components/screens/endscreen/components/animations.js.map +1 -0
  346. package/lib/components/screens/endscreen/components/index.d.ts +19 -0
  347. package/lib/components/screens/endscreen/components/index.d.ts.map +1 -0
  348. package/lib/components/screens/endscreen/components/index.js +8 -0
  349. package/lib/components/screens/endscreen/index.d.ts +9 -0
  350. package/lib/components/screens/endscreen/index.d.ts.map +1 -0
  351. package/lib/components/screens/endscreen/index.js +10 -0
  352. package/lib/components/screens/intro/IntroScreen3D.d.ts +16 -0
  353. package/lib/components/screens/intro/IntroScreen3D.d.ts.map +1 -0
  354. package/lib/components/screens/intro/IntroScreen3D.js +488 -0
  355. package/lib/components/screens/intro/IntroScreen3D.js.map +1 -0
  356. package/lib/components/screens/intro/components/AbilityListOverlayHtml.d.ts +53 -0
  357. package/lib/components/screens/intro/components/AbilityListOverlayHtml.d.ts.map +1 -0
  358. package/lib/components/screens/intro/components/AbilityListOverlayHtml.js +146 -0
  359. package/lib/components/screens/intro/components/AbilityListOverlayHtml.js.map +1 -0
  360. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.d.ts +20 -0
  361. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.d.ts.map +1 -0
  362. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js +154 -0
  363. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js.map +1 -0
  364. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.d.ts +38 -0
  365. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.d.ts.map +1 -0
  366. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js +235 -0
  367. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js.map +1 -0
  368. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.d.ts +35 -0
  369. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.d.ts.map +1 -0
  370. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js +325 -0
  371. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js.map +1 -0
  372. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.d.ts +19 -0
  373. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.d.ts.map +1 -0
  374. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js +88 -0
  375. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js.map +1 -0
  376. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.d.ts +65 -0
  377. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.d.ts.map +1 -0
  378. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js +143 -0
  379. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js.map +1 -0
  380. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.d.ts +27 -0
  381. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.d.ts.map +1 -0
  382. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js +153 -0
  383. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js.map +1 -0
  384. package/lib/components/screens/intro/components/StatBarOverlayHtml.d.ts +47 -0
  385. package/lib/components/screens/intro/components/StatBarOverlayHtml.d.ts.map +1 -0
  386. package/lib/components/screens/intro/components/StatBarOverlayHtml.js +128 -0
  387. package/lib/components/screens/intro/components/StatBarOverlayHtml.js.map +1 -0
  388. package/lib/components/screens/philosophy/PhilosophyScreen3D.d.ts +12 -0
  389. package/lib/components/screens/philosophy/PhilosophyScreen3D.d.ts.map +1 -0
  390. package/lib/components/screens/philosophy/PhilosophyScreen3D.js +561 -0
  391. package/lib/components/screens/philosophy/PhilosophyScreen3D.js.map +1 -0
  392. package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts +40 -0
  393. package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts.map +1 -0
  394. package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts +40 -0
  395. package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts.map +1 -0
  396. package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts +46 -0
  397. package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts.map +1 -0
  398. package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts +42 -0
  399. package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts.map +1 -0
  400. package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts +49 -0
  401. package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts.map +1 -0
  402. package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts +43 -0
  403. package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts.map +1 -0
  404. package/lib/components/screens/philosophy/components/index.d.ts +23 -0
  405. package/lib/components/screens/philosophy/components/index.d.ts.map +1 -0
  406. package/lib/components/screens/philosophy/hooks/index.d.ts +10 -0
  407. package/lib/components/screens/philosophy/hooks/index.d.ts.map +1 -0
  408. package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts +50 -0
  409. package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts.map +1 -0
  410. package/lib/components/screens/training/TrainingScreen3D.d.ts +51 -0
  411. package/lib/components/screens/training/TrainingScreen3D.d.ts.map +1 -0
  412. package/lib/components/screens/training/TrainingScreen3D.js +947 -0
  413. package/lib/components/screens/training/TrainingScreen3D.js.map +1 -0
  414. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.d.ts +31 -0
  415. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.d.ts.map +1 -0
  416. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js +189 -0
  417. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js.map +1 -0
  418. package/lib/components/screens/training/components/AnatomyOverlay3D.d.ts +31 -0
  419. package/lib/components/screens/training/components/AnatomyOverlay3D.d.ts.map +1 -0
  420. package/lib/components/screens/training/components/AnatomyOverlay3D.js +679 -0
  421. package/lib/components/screens/training/components/AnatomyOverlay3D.js.map +1 -0
  422. package/lib/components/screens/training/components/DamageNumber3D.d.ts +28 -0
  423. package/lib/components/screens/training/components/DamageNumber3D.d.ts.map +1 -0
  424. package/lib/components/screens/training/components/DamageNumber3D.js +6 -0
  425. package/lib/components/screens/training/components/FootPlacementMarkers3D.d.ts +47 -0
  426. package/lib/components/screens/training/components/FootPlacementMarkers3D.d.ts.map +1 -0
  427. package/lib/components/screens/training/components/FootPlacementMarkers3D.js +380 -0
  428. package/lib/components/screens/training/components/FootPlacementMarkers3D.js.map +1 -0
  429. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.d.ts +47 -0
  430. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.d.ts.map +1 -0
  431. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js +292 -0
  432. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js.map +1 -0
  433. package/lib/components/screens/training/components/HitFeedbackEffect3D.d.ts +32 -0
  434. package/lib/components/screens/training/components/HitFeedbackEffect3D.d.ts.map +1 -0
  435. package/lib/components/screens/training/components/HitFeedbackEffect3D.js +258 -0
  436. package/lib/components/screens/training/components/HitFeedbackEffect3D.js.map +1 -0
  437. package/lib/components/screens/training/components/TrainingAICharacter3D.d.ts +36 -0
  438. package/lib/components/screens/training/components/TrainingAICharacter3D.d.ts.map +1 -0
  439. package/lib/components/screens/training/components/TrainingAICharacter3D.js +6 -0
  440. package/lib/components/screens/training/components/TrainingArena3D.d.ts +22 -0
  441. package/lib/components/screens/training/components/TrainingArena3D.d.ts.map +1 -0
  442. package/lib/components/screens/training/components/TrainingArena3D.js +5 -0
  443. package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.d.ts +73 -0
  444. package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.d.ts.map +1 -0
  445. package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.js +107 -0
  446. package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.js.map +1 -0
  447. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.d.ts +50 -0
  448. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.d.ts.map +1 -0
  449. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js +129 -0
  450. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js.map +1 -0
  451. package/lib/components/screens/training/components/TrainingDummy3D.d.ts +72 -0
  452. package/lib/components/screens/training/components/TrainingDummy3D.d.ts.map +1 -0
  453. package/lib/components/screens/training/components/TrainingDummy3D.js +298 -0
  454. package/lib/components/screens/training/components/TrainingDummy3D.js.map +1 -0
  455. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.d.ts +30 -0
  456. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.d.ts.map +1 -0
  457. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js +44 -0
  458. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js.map +1 -0
  459. package/lib/components/screens/training/components/TrainingHitEffects3D.d.ts +27 -0
  460. package/lib/components/screens/training/components/TrainingHitEffects3D.d.ts.map +1 -0
  461. package/lib/components/screens/training/components/TrainingHitEffects3D.js +6 -0
  462. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.d.ts +51 -0
  463. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.d.ts.map +1 -0
  464. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js +188 -0
  465. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js.map +1 -0
  466. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.d.ts +63 -0
  467. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.d.ts.map +1 -0
  468. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js +253 -0
  469. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js.map +1 -0
  470. package/lib/components/screens/training/components/VitalPointMarker3D.d.ts +37 -0
  471. package/lib/components/screens/training/components/VitalPointMarker3D.d.ts.map +1 -0
  472. package/lib/components/screens/training/components/VitalPointMarker3D.js +210 -0
  473. package/lib/components/screens/training/components/VitalPointMarker3D.js.map +1 -0
  474. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.d.ts +29 -0
  475. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.d.ts.map +1 -0
  476. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js +195 -0
  477. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js.map +1 -0
  478. package/lib/components/screens/training/components/hud/TrainingBottomHUD.d.ts +59 -0
  479. package/lib/components/screens/training/components/hud/TrainingBottomHUD.d.ts.map +1 -0
  480. package/lib/components/screens/training/components/hud/TrainingBottomHUD.js +145 -0
  481. package/lib/components/screens/training/components/hud/TrainingBottomHUD.js.map +1 -0
  482. package/lib/components/screens/training/components/hud/TrainingLeftHUD.d.ts +47 -0
  483. package/lib/components/screens/training/components/hud/TrainingLeftHUD.d.ts.map +1 -0
  484. package/lib/components/screens/training/components/hud/TrainingLeftHUD.js +59 -0
  485. package/lib/components/screens/training/components/hud/TrainingLeftHUD.js.map +1 -0
  486. package/lib/components/screens/training/components/hud/TrainingRightHUD.d.ts +68 -0
  487. package/lib/components/screens/training/components/hud/TrainingRightHUD.d.ts.map +1 -0
  488. package/lib/components/screens/training/components/hud/TrainingRightHUD.js +93 -0
  489. package/lib/components/screens/training/components/hud/TrainingRightHUD.js.map +1 -0
  490. package/lib/components/screens/training/components/hud/TrainingTopHUD.d.ts +55 -0
  491. package/lib/components/screens/training/components/hud/TrainingTopHUD.d.ts.map +1 -0
  492. package/lib/components/screens/training/components/hud/TrainingTopHUD.js +184 -0
  493. package/lib/components/screens/training/components/hud/TrainingTopHUD.js.map +1 -0
  494. package/lib/components/screens/training/components/hud/index.d.ts +13 -0
  495. package/lib/components/screens/training/components/hud/index.d.ts.map +1 -0
  496. package/lib/components/screens/training/components/hud/index.js +4 -0
  497. package/lib/components/screens/training/components/index.d.ts +22 -0
  498. package/lib/components/screens/training/components/index.d.ts.map +1 -0
  499. package/lib/components/screens/training/components/index.js +19 -0
  500. package/lib/components/screens/training/hooks/useAttackMovement.d.ts +69 -0
  501. package/lib/components/screens/training/hooks/useAttackMovement.d.ts.map +1 -0
  502. package/lib/components/screens/training/hooks/useAttackMovement.js +118 -0
  503. package/lib/components/screens/training/hooks/useAttackMovement.js.map +1 -0
  504. package/lib/components/screens/training/hooks/useTrainingActions.d.ts +82 -0
  505. package/lib/components/screens/training/hooks/useTrainingActions.d.ts.map +1 -0
  506. package/lib/components/screens/training/hooks/useTrainingActions.js +284 -0
  507. package/lib/components/screens/training/hooks/useTrainingActions.js.map +1 -0
  508. package/lib/components/screens/training/hooks/useTrainingLayout.d.ts +62 -0
  509. package/lib/components/screens/training/hooks/useTrainingLayout.d.ts.map +1 -0
  510. package/lib/components/screens/training/hooks/useTrainingLayout.js +96 -0
  511. package/lib/components/screens/training/hooks/useTrainingLayout.js.map +1 -0
  512. package/lib/components/screens/training/hooks/useTrainingState.d.ts +100 -0
  513. package/lib/components/screens/training/hooks/useTrainingState.d.ts.map +1 -0
  514. package/lib/components/screens/training/hooks/useTrainingState.js +344 -0
  515. package/lib/components/screens/training/hooks/useTrainingState.js.map +1 -0
  516. package/lib/components/screens/training/index.d.ts +4 -0
  517. package/lib/components/screens/training/index.d.ts.map +1 -0
  518. package/lib/components/screens/training/index.js +16 -0
  519. package/lib/components/shared/base/AccessibilityProvider.d.ts +51 -0
  520. package/lib/components/shared/base/AccessibilityProvider.d.ts.map +1 -0
  521. package/lib/components/shared/base/AccessibilityProvider.js +71 -0
  522. package/lib/components/shared/base/AccessibilityProvider.js.map +1 -0
  523. package/lib/components/shared/base/BaseButton.d.ts +42 -0
  524. package/lib/components/shared/base/BaseButton.d.ts.map +1 -0
  525. package/lib/components/shared/base/BaseButton.js +214 -0
  526. package/lib/components/shared/base/BaseButton.js.map +1 -0
  527. package/lib/components/shared/base/BaseButtonOverlayHtml.d.ts +52 -0
  528. package/lib/components/shared/base/BaseButtonOverlayHtml.d.ts.map +1 -0
  529. package/lib/components/shared/base/BaseButtonOverlayHtml.js +130 -0
  530. package/lib/components/shared/base/BaseButtonOverlayHtml.js.map +1 -0
  531. package/lib/components/shared/base/BasePanel.d.ts +30 -0
  532. package/lib/components/shared/base/BasePanel.d.ts.map +1 -0
  533. package/lib/components/shared/base/BasePanel.js +83 -0
  534. package/lib/components/shared/base/BasePanel.js.map +1 -0
  535. package/lib/components/shared/base/BaseText.d.ts +40 -0
  536. package/lib/components/shared/base/BaseText.d.ts.map +1 -0
  537. package/lib/components/shared/base/BaseText.js +157 -0
  538. package/lib/components/shared/base/BaseText.js.map +1 -0
  539. package/lib/components/shared/base/ResponsiveContainer.d.ts +126 -0
  540. package/lib/components/shared/base/ResponsiveContainer.d.ts.map +1 -0
  541. package/lib/components/shared/base/index.d.ts +23 -0
  542. package/lib/components/shared/base/index.d.ts.map +1 -0
  543. package/lib/components/shared/base/index.js +6 -0
  544. package/lib/components/shared/base/layoutUtils.d.ts +102 -0
  545. package/lib/components/shared/base/layoutUtils.d.ts.map +1 -0
  546. package/lib/components/shared/base/useKoreanTheme.d.ts +206 -0
  547. package/lib/components/shared/base/useKoreanTheme.d.ts.map +1 -0
  548. package/lib/components/shared/base/useKoreanTheme.js +169 -0
  549. package/lib/components/shared/base/useKoreanTheme.js.map +1 -0
  550. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.d.ts +32 -0
  551. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.d.ts.map +1 -0
  552. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js +69 -0
  553. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js.map +1 -0
  554. package/lib/components/shared/effects/ScreenFlash.d.ts +98 -0
  555. package/lib/components/shared/effects/ScreenFlash.d.ts.map +1 -0
  556. package/lib/components/shared/mobile/ActionButtons.d.ts +44 -0
  557. package/lib/components/shared/mobile/ActionButtons.d.ts.map +1 -0
  558. package/lib/components/shared/mobile/ActionButtons.js +324 -0
  559. package/lib/components/shared/mobile/ActionButtons.js.map +1 -0
  560. package/lib/components/shared/mobile/GestureRecognizerPure.d.ts +64 -0
  561. package/lib/components/shared/mobile/GestureRecognizerPure.d.ts.map +1 -0
  562. package/lib/components/shared/mobile/GestureRecognizerPure.js +231 -0
  563. package/lib/components/shared/mobile/GestureRecognizerPure.js.map +1 -0
  564. package/lib/components/shared/mobile/HapticController.d.ts +253 -0
  565. package/lib/components/shared/mobile/HapticController.d.ts.map +1 -0
  566. package/lib/components/shared/mobile/HapticController.js +280 -0
  567. package/lib/components/shared/mobile/HapticController.js.map +1 -0
  568. package/lib/components/shared/mobile/MobileControlsPure.d.ts +43 -0
  569. package/lib/components/shared/mobile/MobileControlsPure.d.ts.map +1 -0
  570. package/lib/components/shared/mobile/MobileControlsPure.js +294 -0
  571. package/lib/components/shared/mobile/MobileControlsPure.js.map +1 -0
  572. package/lib/components/shared/mobile/PerformanceMonitor.d.ts +249 -0
  573. package/lib/components/shared/mobile/PerformanceMonitor.d.ts.map +1 -0
  574. package/lib/components/shared/mobile/StanceWheelPure.d.ts +78 -0
  575. package/lib/components/shared/mobile/StanceWheelPure.d.ts.map +1 -0
  576. package/lib/components/shared/mobile/StanceWheelPure.js +386 -0
  577. package/lib/components/shared/mobile/StanceWheelPure.js.map +1 -0
  578. package/lib/components/shared/mobile/TouchOptimizer.d.ts +154 -0
  579. package/lib/components/shared/mobile/TouchOptimizer.d.ts.map +1 -0
  580. package/lib/components/shared/mobile/TouchOptimizer.js +83 -0
  581. package/lib/components/shared/mobile/TouchOptimizer.js.map +1 -0
  582. package/lib/components/shared/mobile/VirtualDPad.d.ts +49 -0
  583. package/lib/components/shared/mobile/VirtualDPad.d.ts.map +1 -0
  584. package/lib/components/shared/mobile/VirtualDPad.js +289 -0
  585. package/lib/components/shared/mobile/VirtualDPad.js.map +1 -0
  586. package/lib/components/shared/mobile/index.d.ts +31 -0
  587. package/lib/components/shared/mobile/index.d.ts.map +1 -0
  588. package/lib/components/shared/mobile/index.js +7 -0
  589. package/lib/components/shared/three/anatomy/BodySurface.d.ts +78 -0
  590. package/lib/components/shared/three/anatomy/BodySurface.d.ts.map +1 -0
  591. package/lib/components/shared/three/anatomy/BodySurface.js +393 -0
  592. package/lib/components/shared/three/anatomy/BodySurface.js.map +1 -0
  593. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.d.ts +147 -0
  594. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.d.ts.map +1 -0
  595. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js +541 -0
  596. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js.map +1 -0
  597. package/lib/components/shared/three/anatomy/BoneClothing.d.ts +89 -0
  598. package/lib/components/shared/three/anatomy/BoneClothing.d.ts.map +1 -0
  599. package/lib/components/shared/three/anatomy/BoneClothing.js +345 -0
  600. package/lib/components/shared/three/anatomy/BoneClothing.js.map +1 -0
  601. package/lib/components/shared/three/anatomy/BoneRenderer.d.ts +129 -0
  602. package/lib/components/shared/three/anatomy/BoneRenderer.d.ts.map +1 -0
  603. package/lib/components/shared/three/anatomy/BoneRenderer.js +266 -0
  604. package/lib/components/shared/three/anatomy/BoneRenderer.js.map +1 -0
  605. package/lib/components/shared/three/anatomy/Face3D.d.ts +40 -0
  606. package/lib/components/shared/three/anatomy/Face3D.d.ts.map +1 -0
  607. package/lib/components/shared/three/anatomy/Face3D.js +426 -0
  608. package/lib/components/shared/three/anatomy/Face3D.js.map +1 -0
  609. package/lib/components/shared/three/anatomy/Foot3D.d.ts +71 -0
  610. package/lib/components/shared/three/anatomy/Foot3D.d.ts.map +1 -0
  611. package/lib/components/shared/three/anatomy/Foot3D.js +178 -0
  612. package/lib/components/shared/three/anatomy/Foot3D.js.map +1 -0
  613. package/lib/components/shared/three/anatomy/Hand3D.d.ts +101 -0
  614. package/lib/components/shared/three/anatomy/Hand3D.d.ts.map +1 -0
  615. package/lib/components/shared/three/anatomy/Hand3D.js +376 -0
  616. package/lib/components/shared/three/anatomy/Hand3D.js.map +1 -0
  617. package/lib/components/shared/three/effects/ActionFeedback.d.ts +78 -0
  618. package/lib/components/shared/three/effects/ActionFeedback.d.ts.map +1 -0
  619. package/lib/components/shared/three/effects/ActionFeedback.js +236 -0
  620. package/lib/components/shared/three/effects/ActionFeedback.js.map +1 -0
  621. package/lib/components/shared/three/effects/DamageNumbers.d.ts +36 -0
  622. package/lib/components/shared/three/effects/DamageNumbers.d.ts.map +1 -0
  623. package/lib/components/shared/three/effects/DamageNumbers.js +148 -0
  624. package/lib/components/shared/three/effects/DamageNumbers.js.map +1 -0
  625. package/lib/components/shared/three/effects/ExplosiveBurstEffect3D.d.ts +41 -0
  626. package/lib/components/shared/three/effects/ExplosiveBurstEffect3D.d.ts.map +1 -0
  627. package/lib/components/shared/three/effects/GrapplingIndicator3D.d.ts +49 -0
  628. package/lib/components/shared/three/effects/GrapplingIndicator3D.d.ts.map +1 -0
  629. package/lib/components/shared/three/effects/HitEffects3D.d.ts +28 -0
  630. package/lib/components/shared/three/effects/HitEffects3D.d.ts.map +1 -0
  631. package/lib/components/shared/three/effects/HitEffects3D.js +427 -0
  632. package/lib/components/shared/three/effects/HitEffects3D.js.map +1 -0
  633. package/lib/components/shared/three/effects/LimbExposureIndicator3D.d.ts +67 -0
  634. package/lib/components/shared/three/effects/LimbExposureIndicator3D.d.ts.map +1 -0
  635. package/lib/components/shared/three/effects/NerveDisruptionEffect3D.d.ts +63 -0
  636. package/lib/components/shared/three/effects/NerveDisruptionEffect3D.d.ts.map +1 -0
  637. package/lib/components/shared/three/effects/PlayerStateIndicators.d.ts +36 -0
  638. package/lib/components/shared/three/effects/PlayerStateIndicators.d.ts.map +1 -0
  639. package/lib/components/shared/three/effects/PlayerStateIndicators.js +237 -0
  640. package/lib/components/shared/three/effects/PlayerStateIndicators.js.map +1 -0
  641. package/lib/components/shared/three/effects/StanceSymbol3D.d.ts +52 -0
  642. package/lib/components/shared/three/effects/StanceSymbol3D.d.ts.map +1 -0
  643. package/lib/components/shared/three/effects/StanceSymbol3D.js +128 -0
  644. package/lib/components/shared/three/effects/StanceSymbol3D.js.map +1 -0
  645. package/lib/components/shared/three/effects/StanceTransitionEffect.d.ts +56 -0
  646. package/lib/components/shared/three/effects/StanceTransitionEffect.d.ts.map +1 -0
  647. package/lib/components/shared/three/effects/StanceTransitionEffect.js +174 -0
  648. package/lib/components/shared/three/effects/StanceTransitionEffect.js.map +1 -0
  649. package/lib/components/shared/three/effects/ThunderEffect3D.d.ts +39 -0
  650. package/lib/components/shared/three/effects/ThunderEffect3D.d.ts.map +1 -0
  651. package/lib/components/shared/three/effects/VitalPointMarkers3D.d.ts +48 -0
  652. package/lib/components/shared/three/effects/VitalPointMarkers3D.d.ts.map +1 -0
  653. package/lib/components/shared/three/effects/VitalPointMarkers3D.js +249 -0
  654. package/lib/components/shared/three/effects/VitalPointMarkers3D.js.map +1 -0
  655. package/lib/components/shared/three/index.d.ts +30 -0
  656. package/lib/components/shared/three/index.d.ts.map +1 -0
  657. package/lib/components/shared/three/index.js +9 -0
  658. package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts +184 -0
  659. package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts.map +1 -0
  660. package/lib/components/shared/three/indicators/ElementalColorSystem.js +147 -0
  661. package/lib/components/shared/three/indicators/ElementalColorSystem.js.map +1 -0
  662. package/lib/components/shared/three/indicators/GuardIndicator.d.ts +58 -0
  663. package/lib/components/shared/three/indicators/GuardIndicator.d.ts.map +1 -0
  664. package/lib/components/shared/three/indicators/GuardIndicator.js +259 -0
  665. package/lib/components/shared/three/indicators/GuardIndicator.js.map +1 -0
  666. package/lib/components/shared/three/indicators/HapticFeedback.d.ts +184 -0
  667. package/lib/components/shared/three/indicators/HapticFeedback.d.ts.map +1 -0
  668. package/lib/components/shared/three/indicators/HapticFeedback.js +46 -0
  669. package/lib/components/shared/three/indicators/HapticFeedback.js.map +1 -0
  670. package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts +53 -0
  671. package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts.map +1 -0
  672. package/lib/components/shared/three/indicators/StanceChangeIndicator.js +222 -0
  673. package/lib/components/shared/three/indicators/StanceChangeIndicator.js.map +1 -0
  674. package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts +82 -0
  675. package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts.map +1 -0
  676. package/lib/components/shared/three/models/Player3DWithTransitions.d.ts +77 -0
  677. package/lib/components/shared/three/models/Player3DWithTransitions.d.ts.map +1 -0
  678. package/lib/components/shared/three/models/Player3DWithTransitions.js +118 -0
  679. package/lib/components/shared/three/models/Player3DWithTransitions.js.map +1 -0
  680. package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts +44 -0
  681. package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts.map +1 -0
  682. package/lib/components/shared/three/models/SkeletalPlayer3D.js +358 -0
  683. package/lib/components/shared/three/models/SkeletalPlayer3D.js.map +1 -0
  684. package/lib/components/shared/three/optimization/AdaptiveQuality.d.ts +107 -0
  685. package/lib/components/shared/three/optimization/AdaptiveQuality.d.ts.map +1 -0
  686. package/lib/components/shared/three/optimization/AdaptiveQuality.js +197 -0
  687. package/lib/components/shared/three/optimization/AdaptiveQuality.js.map +1 -0
  688. package/lib/components/shared/three/optimization/InstancedGeometry.d.ts +189 -0
  689. package/lib/components/shared/three/optimization/InstancedGeometry.d.ts.map +1 -0
  690. package/lib/components/shared/three/optimization/InstancedGeometry.js +3 -0
  691. package/lib/components/shared/three/optimization/LODSystem.d.ts +126 -0
  692. package/lib/components/shared/three/optimization/LODSystem.d.ts.map +1 -0
  693. package/lib/components/shared/three/optimization/LODSystem.js +3 -0
  694. package/lib/components/shared/three/optimization/index.d.ts +14 -0
  695. package/lib/components/shared/three/optimization/index.d.ts.map +1 -0
  696. package/lib/components/shared/three/optimization/index.js +3 -0
  697. package/lib/components/shared/three/scene/AtmosphericParticles3D.d.ts +31 -0
  698. package/lib/components/shared/three/scene/AtmosphericParticles3D.d.ts.map +1 -0
  699. package/lib/components/shared/three/scene/AtmosphericParticles3D.js +84 -0
  700. package/lib/components/shared/three/scene/AtmosphericParticles3D.js.map +1 -0
  701. package/lib/components/shared/three/scene/BackgroundScene3D.d.ts +76 -0
  702. package/lib/components/shared/three/scene/BackgroundScene3D.d.ts.map +1 -0
  703. package/lib/components/shared/three/scene/BackgroundScene3D.js +124 -0
  704. package/lib/components/shared/three/scene/BackgroundScene3D.js.map +1 -0
  705. package/lib/components/shared/three/scene/CombatArena3D.d.ts +38 -0
  706. package/lib/components/shared/three/scene/CombatArena3D.d.ts.map +1 -0
  707. package/lib/components/shared/three/scene/CombatArena3D.js +256 -0
  708. package/lib/components/shared/three/scene/CombatArena3D.js.map +1 -0
  709. package/lib/components/shared/three/scene/DebugCollision.d.ts +64 -0
  710. package/lib/components/shared/three/scene/DebugCollision.d.ts.map +1 -0
  711. package/lib/components/shared/three/scene/KoreanSignage3D.d.ts +29 -0
  712. package/lib/components/shared/three/scene/KoreanSignage3D.d.ts.map +1 -0
  713. package/lib/components/shared/three/scene/KoreanSignage3D.js +122 -0
  714. package/lib/components/shared/three/scene/KoreanSignage3D.js.map +1 -0
  715. package/lib/components/shared/three/ui/ArchetypeCard.d.ts +38 -0
  716. package/lib/components/shared/three/ui/ArchetypeCard.d.ts.map +1 -0
  717. package/lib/components/shared/three/ui/ArchetypeCard.js +213 -0
  718. package/lib/components/shared/three/ui/ArchetypeCard.js.map +1 -0
  719. package/lib/components/shared/three/ui/BodyPartHealthDisplay.d.ts +45 -0
  720. package/lib/components/shared/three/ui/BodyPartHealthDisplay.d.ts.map +1 -0
  721. package/lib/components/shared/three/ui/BodyPartHealthDisplay.js +206 -0
  722. package/lib/components/shared/three/ui/BodyPartHealthDisplay.js.map +1 -0
  723. package/lib/components/shared/three/ui/BreathingIndicator.d.ts +25 -0
  724. package/lib/components/shared/three/ui/BreathingIndicator.d.ts.map +1 -0
  725. package/lib/components/shared/three/ui/BreathingIndicator2.js +104 -0
  726. package/lib/components/shared/three/ui/BreathingIndicator2.js.map +1 -0
  727. package/lib/components/shared/three/ui/CombatReadinessBar.d.ts +43 -0
  728. package/lib/components/shared/three/ui/CombatReadinessBar.d.ts.map +1 -0
  729. package/lib/components/shared/three/ui/CombatReadinessBar.js +135 -0
  730. package/lib/components/shared/three/ui/CombatReadinessBar.js.map +1 -0
  731. package/lib/components/shared/three/ui/ComboCounter.d.ts +42 -0
  732. package/lib/components/shared/three/ui/ComboCounter.d.ts.map +1 -0
  733. package/lib/components/shared/three/ui/ComboCounter.js +222 -0
  734. package/lib/components/shared/three/ui/ComboCounter.js.map +1 -0
  735. package/lib/components/shared/three/ui/HealthBar.d.ts +37 -0
  736. package/lib/components/shared/three/ui/HealthBar.d.ts.map +1 -0
  737. package/lib/components/shared/three/ui/HealthBar.js +112 -0
  738. package/lib/components/shared/three/ui/HealthBar.js.map +1 -0
  739. package/lib/components/shared/three/ui/KoreanButton.d.ts +37 -0
  740. package/lib/components/shared/three/ui/KoreanButton.d.ts.map +1 -0
  741. package/lib/components/shared/three/ui/KoreanButton.js +33 -0
  742. package/lib/components/shared/three/ui/KoreanButton.js.map +1 -0
  743. package/lib/components/shared/three/ui/KoreanPanel.d.ts +32 -0
  744. package/lib/components/shared/three/ui/KoreanPanel.d.ts.map +1 -0
  745. package/lib/components/shared/three/ui/KoreanPanel.js +29 -0
  746. package/lib/components/shared/three/ui/KoreanPanel.js.map +1 -0
  747. package/lib/components/shared/three/ui/KoreanText.d.ts +35 -0
  748. package/lib/components/shared/three/ui/KoreanText.d.ts.map +1 -0
  749. package/lib/components/shared/three/ui/KoreanText.js +32 -0
  750. package/lib/components/shared/three/ui/KoreanText.js.map +1 -0
  751. package/lib/components/shared/three/ui/MenuList.d.ts +47 -0
  752. package/lib/components/shared/three/ui/MenuList.d.ts.map +1 -0
  753. package/lib/components/shared/three/ui/MenuList.js +123 -0
  754. package/lib/components/shared/three/ui/MenuList.js.map +1 -0
  755. package/lib/components/shared/three/ui/PlayerHUD.d.ts +34 -0
  756. package/lib/components/shared/three/ui/PlayerHUD.d.ts.map +1 -0
  757. package/lib/components/shared/three/ui/PlayerHUD.js +231 -0
  758. package/lib/components/shared/three/ui/PlayerHUD.js.map +1 -0
  759. package/lib/components/shared/three/ui/ProgressBar.d.ts +48 -0
  760. package/lib/components/shared/three/ui/ProgressBar.d.ts.map +1 -0
  761. package/lib/components/shared/three/ui/ProgressBar.js +173 -0
  762. package/lib/components/shared/three/ui/ProgressBar.js.map +1 -0
  763. package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts +62 -0
  764. package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts.map +1 -0
  765. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js +185 -0
  766. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js.map +1 -0
  767. package/lib/components/shared/three/ui/StaminaBar.d.ts +37 -0
  768. package/lib/components/shared/three/ui/StaminaBar.d.ts.map +1 -0
  769. package/lib/components/shared/three/ui/StaminaBar.js +103 -0
  770. package/lib/components/shared/three/ui/StaminaBar.js.map +1 -0
  771. package/lib/components/shared/three/ui/TechniqueBar.d.ts +52 -0
  772. package/lib/components/shared/three/ui/TechniqueBar.d.ts.map +1 -0
  773. package/lib/components/shared/three/ui/TechniqueBar.js +128 -0
  774. package/lib/components/shared/three/ui/TechniqueBar.js.map +1 -0
  775. package/lib/components/shared/three/ui/TechniqueBarContainer.d.ts +49 -0
  776. package/lib/components/shared/three/ui/TechniqueBarContainer.d.ts.map +1 -0
  777. package/lib/components/shared/three/ui/TechniqueCard.d.ts +64 -0
  778. package/lib/components/shared/three/ui/TechniqueCard.d.ts.map +1 -0
  779. package/lib/components/shared/three/ui/TechniqueCard.js +333 -0
  780. package/lib/components/shared/three/ui/TechniqueCard.js.map +1 -0
  781. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.d.ts +76 -0
  782. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.d.ts.map +1 -0
  783. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js +551 -0
  784. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js.map +1 -0
  785. package/lib/components/shared/three/ui/VulnerabilityWindowHUD.d.ts +63 -0
  786. package/lib/components/shared/three/ui/VulnerabilityWindowHUD.d.ts.map +1 -0
  787. package/lib/components/shared/ui/BackButton.d.ts +82 -0
  788. package/lib/components/shared/ui/BackButton.d.ts.map +1 -0
  789. package/lib/components/shared/ui/BackButton.js +67 -0
  790. package/lib/components/shared/ui/BackButton.js.map +1 -0
  791. package/lib/components/shared/ui/BaseHUDContainer.d.ts +71 -0
  792. package/lib/components/shared/ui/BaseHUDContainer.d.ts.map +1 -0
  793. package/lib/components/shared/ui/BaseHUDContainer.js +126 -0
  794. package/lib/components/shared/ui/BaseHUDContainer.js.map +1 -0
  795. package/lib/components/shared/ui/CombatTimer.d.ts +60 -0
  796. package/lib/components/shared/ui/CombatTimer.d.ts.map +1 -0
  797. package/lib/components/shared/ui/CombatTimer.js +145 -0
  798. package/lib/components/shared/ui/CombatTimer.js.map +1 -0
  799. package/lib/components/shared/ui/ErrorBoundary.d.ts +44 -0
  800. package/lib/components/shared/ui/ErrorBoundary.d.ts.map +1 -0
  801. package/lib/components/shared/ui/ErrorModal.d.ts +21 -0
  802. package/lib/components/shared/ui/ErrorModal.d.ts.map +1 -0
  803. package/lib/components/shared/ui/ErrorModal.js +133 -0
  804. package/lib/components/shared/ui/ErrorModal.js.map +1 -0
  805. package/lib/components/shared/ui/HUDSection.d.ts +65 -0
  806. package/lib/components/shared/ui/HUDSection.d.ts.map +1 -0
  807. package/lib/components/shared/ui/LoadingState.d.ts +50 -0
  808. package/lib/components/shared/ui/LoadingState.d.ts.map +1 -0
  809. package/lib/components/shared/ui/LoadingState.js +92 -0
  810. package/lib/components/shared/ui/LoadingState.js.map +1 -0
  811. package/lib/components/shared/ui/MobileHUDLayout.d.ts +70 -0
  812. package/lib/components/shared/ui/MobileHUDLayout.d.ts.map +1 -0
  813. package/lib/components/shared/ui/ResponsiveContainer.d.ts +69 -0
  814. package/lib/components/shared/ui/ResponsiveContainer.d.ts.map +1 -0
  815. package/lib/components/shared/ui/SplashScreen.d.ts +13 -0
  816. package/lib/components/shared/ui/SplashScreen.d.ts.map +1 -0
  817. package/lib/components/shared/ui/SplashScreen.js +204 -0
  818. package/lib/components/shared/ui/SplashScreen.js.map +1 -0
  819. package/lib/components/shared/ui/StyledHUDPanel.d.ts +56 -0
  820. package/lib/components/shared/ui/StyledHUDPanel.d.ts.map +1 -0
  821. package/lib/components/shared/ui/VitalPointOverlayControlsPure.d.ts +79 -0
  822. package/lib/components/shared/ui/VitalPointOverlayControlsPure.d.ts.map +1 -0
  823. package/lib/components/shared/ui/VitalPointOverlayControlsPure.js +550 -0
  824. package/lib/components/shared/ui/VitalPointOverlayControlsPure.js.map +1 -0
  825. package/lib/components/shared/ui/VolumeControl.d.ts +20 -0
  826. package/lib/components/shared/ui/VolumeControl.d.ts.map +1 -0
  827. package/lib/components/shared/ui/VolumeControl.js +292 -0
  828. package/lib/components/shared/ui/VolumeControl.js.map +1 -0
  829. package/lib/components/shared/ui/shared/ConfirmDialog.d.ts +29 -0
  830. package/lib/components/shared/ui/shared/ConfirmDialog.d.ts.map +1 -0
  831. package/lib/components/shared/ui/shared/ConfirmDialog.js +149 -0
  832. package/lib/components/shared/ui/shared/ConfirmDialog.js.map +1 -0
  833. package/lib/components/test/Hello3D.d.ts +36 -0
  834. package/lib/components/test/Hello3D.d.ts.map +1 -0
  835. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.d.ts +63 -0
  836. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.d.ts.map +1 -0
  837. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js +179 -0
  838. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js.map +1 -0
  839. package/lib/components/ui/combat/ComboCounter.d.ts +85 -0
  840. package/lib/components/ui/combat/ComboCounter.d.ts.map +1 -0
  841. package/lib/components/ui/combat/PressureMeter.d.ts +60 -0
  842. package/lib/components/ui/combat/PressureMeter.d.ts.map +1 -0
  843. package/lib/components/ui/combat/index.d.ts +8 -0
  844. package/lib/components/ui/combat/index.d.ts.map +1 -0
  845. package/lib/constants/bodyDimensions.d.ts +241 -0
  846. package/lib/constants/bodyDimensions.d.ts.map +1 -0
  847. package/lib/constants/bodyDimensions.js +213 -0
  848. package/lib/constants/bodyDimensions.js.map +1 -0
  849. package/lib/constants/bodyRenderingConstants.d.ts +295 -0
  850. package/lib/constants/bodyRenderingConstants.d.ts.map +1 -0
  851. package/lib/constants/bodyRenderingConstants.js +128 -0
  852. package/lib/constants/bodyRenderingConstants.js.map +1 -0
  853. package/lib/data/archetypeClothing.d.ts +40 -0
  854. package/lib/data/archetypeClothing.d.ts.map +1 -0
  855. package/lib/data/archetypeClothing.js +584 -0
  856. package/lib/data/archetypeClothing.js.map +1 -0
  857. package/lib/data/archetypePhysicalAttributes.d.ts +279 -0
  858. package/lib/data/archetypePhysicalAttributes.d.ts.map +1 -0
  859. package/lib/data/archetypePhysicalAttributes.js +227 -0
  860. package/lib/data/archetypePhysicalAttributes.js.map +1 -0
  861. package/lib/data/techniqueMappings.d.ts +64 -0
  862. package/lib/data/techniqueMappings.d.ts.map +1 -0
  863. package/lib/data/techniqueMappings.js +56 -0
  864. package/lib/data/techniqueMappings.js.map +1 -0
  865. package/lib/data/techniques.d.ts +84 -0
  866. package/lib/data/techniques.d.ts.map +1 -0
  867. package/lib/data/techniques.js +739 -0
  868. package/lib/data/techniques.js.map +1 -0
  869. package/lib/hooks/useActionFeedback.d.ts +114 -0
  870. package/lib/hooks/useActionFeedback.d.ts.map +1 -0
  871. package/lib/hooks/useActionFeedback.js +158 -0
  872. package/lib/hooks/useActionFeedback.js.map +1 -0
  873. package/lib/hooks/useBalanceAnimations.d.ts +62 -0
  874. package/lib/hooks/useBalanceAnimations.d.ts.map +1 -0
  875. package/lib/hooks/useBalanceAnimations.js +133 -0
  876. package/lib/hooks/useBalanceAnimations.js.map +1 -0
  877. package/lib/hooks/useCombatTimer.d.ts +77 -0
  878. package/lib/hooks/useCombatTimer.d.ts.map +1 -0
  879. package/lib/hooks/useCombatTimer.js +139 -0
  880. package/lib/hooks/useCombatTimer.js.map +1 -0
  881. package/lib/hooks/useDebounce.d.ts +30 -0
  882. package/lib/hooks/useDebounce.d.ts.map +1 -0
  883. package/lib/hooks/useHUDLayout.d.ts +67 -0
  884. package/lib/hooks/useHUDLayout.d.ts.map +1 -0
  885. package/lib/hooks/useHUDLayout.js +92 -0
  886. package/lib/hooks/useHUDLayout.js.map +1 -0
  887. package/lib/hooks/useHandPoseTransitions.d.ts +65 -0
  888. package/lib/hooks/useHandPoseTransitions.d.ts.map +1 -0
  889. package/lib/hooks/useHandPoseTransitions.js +127 -0
  890. package/lib/hooks/useHandPoseTransitions.js.map +1 -0
  891. package/lib/hooks/useKeyboardControls.d.ts +73 -0
  892. package/lib/hooks/useKeyboardControls.d.ts.map +1 -0
  893. package/lib/hooks/useKeyboardControls.js +311 -0
  894. package/lib/hooks/useKeyboardControls.js.map +1 -0
  895. package/lib/hooks/useMatchCountdown.d.ts +87 -0
  896. package/lib/hooks/useMatchCountdown.d.ts.map +1 -0
  897. package/lib/hooks/useMatchCountdown.js +162 -0
  898. package/lib/hooks/useMatchCountdown.js.map +1 -0
  899. package/lib/hooks/useMuscleActivation.d.ts +76 -0
  900. package/lib/hooks/useMuscleActivation.d.ts.map +1 -0
  901. package/lib/hooks/useMuscleActivation.js +99 -0
  902. package/lib/hooks/useMuscleActivation.js.map +1 -0
  903. package/lib/hooks/usePauseMenu.d.ts +32 -0
  904. package/lib/hooks/usePauseMenu.d.ts.map +1 -0
  905. package/lib/hooks/usePlayerAnimation.d.ts +188 -0
  906. package/lib/hooks/usePlayerAnimation.d.ts.map +1 -0
  907. package/lib/hooks/usePlayerAnimation.js +145 -0
  908. package/lib/hooks/usePlayerAnimation.js.map +1 -0
  909. package/lib/hooks/useResponsiveLayout.d.ts +184 -0
  910. package/lib/hooks/useResponsiveLayout.d.ts.map +1 -0
  911. package/lib/hooks/useRoundTransition.d.ts +87 -0
  912. package/lib/hooks/useRoundTransition.d.ts.map +1 -0
  913. package/lib/hooks/useRoundTransition.js +158 -0
  914. package/lib/hooks/useRoundTransition.js.map +1 -0
  915. package/lib/hooks/useSkeletalAnimation.d.ts +88 -0
  916. package/lib/hooks/useSkeletalAnimation.d.ts.map +1 -0
  917. package/lib/hooks/useSkeletalAnimation.js +176 -0
  918. package/lib/hooks/useSkeletalAnimation.js.map +1 -0
  919. package/lib/hooks/useTechniqueSelection.d.ts +73 -0
  920. package/lib/hooks/useTechniqueSelection.d.ts.map +1 -0
  921. package/lib/hooks/useTechniqueSelection.js +190 -0
  922. package/lib/hooks/useTechniqueSelection.js.map +1 -0
  923. package/lib/hooks/useThrottle.d.ts +30 -0
  924. package/lib/hooks/useThrottle.d.ts.map +1 -0
  925. package/lib/hooks/useThrottle.js +61 -0
  926. package/lib/hooks/useThrottle.js.map +1 -0
  927. package/lib/hooks/useTouchControls.d.ts +107 -0
  928. package/lib/hooks/useTouchControls.d.ts.map +1 -0
  929. package/lib/hooks/useTouchControls.js +260 -0
  930. package/lib/hooks/useTouchControls.js.map +1 -0
  931. package/lib/hooks/useWebGLContextLossHandler.d.ts +77 -0
  932. package/lib/hooks/useWebGLContextLossHandler.d.ts.map +1 -0
  933. package/lib/hooks/useWebGLContextLossHandler.js +119 -0
  934. package/lib/hooks/useWebGLContextLossHandler.js.map +1 -0
  935. package/lib/hooks/useWindowSize.d.ts +60 -0
  936. package/lib/hooks/useWindowSize.d.ts.map +1 -0
  937. package/lib/hooks/useWindowSize.js +62 -0
  938. package/lib/hooks/useWindowSize.js.map +1 -0
  939. package/lib/index.d.ts +21 -0
  940. package/lib/index.d.ts.map +1 -0
  941. package/lib/index.js +114 -0
  942. package/lib/systems/CombatSystem.d.ts +348 -0
  943. package/lib/systems/CombatSystem.d.ts.map +1 -0
  944. package/lib/systems/CombatSystem.js +877 -0
  945. package/lib/systems/CombatSystem.js.map +1 -0
  946. package/lib/systems/EffectCalculator.d.ts +176 -0
  947. package/lib/systems/EffectCalculator.d.ts.map +1 -0
  948. package/lib/systems/EffectCalculator.js +251 -0
  949. package/lib/systems/EffectCalculator.js.map +1 -0
  950. package/lib/systems/LayoutSystem.d.ts +250 -0
  951. package/lib/systems/LayoutSystem.d.ts.map +1 -0
  952. package/lib/systems/LayoutSystem.js +337 -0
  953. package/lib/systems/LayoutSystem.js.map +1 -0
  954. package/lib/systems/PlayerEffectManager.d.ts +210 -0
  955. package/lib/systems/PlayerEffectManager.d.ts.map +1 -0
  956. package/lib/systems/PlayerEffectManager.js +178 -0
  957. package/lib/systems/PlayerEffectManager.js.map +1 -0
  958. package/lib/systems/ResponsiveScaling.d.ts +298 -0
  959. package/lib/systems/ResponsiveScaling.d.ts.map +1 -0
  960. package/lib/systems/ResponsiveScaling.js +376 -0
  961. package/lib/systems/ResponsiveScaling.js.map +1 -0
  962. package/lib/systems/TrigramSystem.d.ts +388 -0
  963. package/lib/systems/TrigramSystem.d.ts.map +1 -0
  964. package/lib/systems/TrigramSystem.js +512 -0
  965. package/lib/systems/TrigramSystem.js.map +1 -0
  966. package/lib/systems/VitalPointSystem.d.ts +330 -0
  967. package/lib/systems/VitalPointSystem.d.ts.map +1 -0
  968. package/lib/systems/VitalPointSystem.js +455 -0
  969. package/lib/systems/VitalPointSystem.js.map +1 -0
  970. package/lib/systems/ai/AIPersonality.d.ts +133 -0
  971. package/lib/systems/ai/AIPersonality.d.ts.map +1 -0
  972. package/lib/systems/ai/AIPersonality.js +245 -0
  973. package/lib/systems/ai/AIPersonality.js.map +1 -0
  974. package/lib/systems/ai/AdaptiveDifficulty.d.ts +159 -0
  975. package/lib/systems/ai/AdaptiveDifficulty.d.ts.map +1 -0
  976. package/lib/systems/ai/AdaptiveDifficulty.js +297 -0
  977. package/lib/systems/ai/AdaptiveDifficulty.js.map +1 -0
  978. package/lib/systems/ai/ArchetypeEnforcer.d.ts +132 -0
  979. package/lib/systems/ai/ArchetypeEnforcer.d.ts.map +1 -0
  980. package/lib/systems/ai/ArchetypeEnforcer.js +279 -0
  981. package/lib/systems/ai/ArchetypeEnforcer.js.map +1 -0
  982. package/lib/systems/ai/ComboSystem.d.ts +136 -0
  983. package/lib/systems/ai/ComboSystem.d.ts.map +1 -0
  984. package/lib/systems/ai/ComboSystem.js +384 -0
  985. package/lib/systems/ai/ComboSystem.js.map +1 -0
  986. package/lib/systems/ai/DecisionTree.d.ts +563 -0
  987. package/lib/systems/ai/DecisionTree.d.ts.map +1 -0
  988. package/lib/systems/ai/DecisionTree.js +1516 -0
  989. package/lib/systems/ai/DecisionTree.js.map +1 -0
  990. package/lib/systems/ai/TrainingAI.d.ts +132 -0
  991. package/lib/systems/ai/TrainingAI.d.ts.map +1 -0
  992. package/lib/systems/ai/TrainingAI.js +265 -0
  993. package/lib/systems/ai/TrainingAI.js.map +1 -0
  994. package/lib/systems/ai/__tests__/AI-Performance.bench.d.ts +19 -0
  995. package/lib/systems/ai/__tests__/AI-Performance.bench.d.ts.map +1 -0
  996. package/lib/systems/ai/index.d.ts +12 -0
  997. package/lib/systems/ai/index.d.ts.map +1 -0
  998. package/lib/systems/ai/index.js +7 -0
  999. package/lib/systems/ai/types.d.ts +111 -0
  1000. package/lib/systems/ai/types.d.ts.map +1 -0
  1001. package/lib/systems/ai/types.js +24 -0
  1002. package/lib/systems/ai/types.js.map +1 -0
  1003. package/lib/systems/animation/AnimationCategory.d.ts +64 -0
  1004. package/lib/systems/animation/AnimationCategory.d.ts.map +1 -0
  1005. package/lib/systems/animation/builders/AnimationBuilder.d.ts +288 -0
  1006. package/lib/systems/animation/builders/AnimationBuilder.d.ts.map +1 -0
  1007. package/lib/systems/animation/builders/AnimationBuilder.js +261 -0
  1008. package/lib/systems/animation/builders/AnimationBuilder.js.map +1 -0
  1009. package/lib/systems/animation/builders/AnimationFactoryPresets.d.ts +280 -0
  1010. package/lib/systems/animation/builders/AnimationFactoryPresets.d.ts.map +1 -0
  1011. package/lib/systems/animation/builders/AnimationFactoryPresets.js +234 -0
  1012. package/lib/systems/animation/builders/AnimationFactoryPresets.js.map +1 -0
  1013. package/lib/systems/animation/builders/HandPoseApplicator.d.ts +56 -0
  1014. package/lib/systems/animation/builders/HandPoseApplicator.d.ts.map +1 -0
  1015. package/lib/systems/animation/builders/HandPoseApplicator.js +130 -0
  1016. package/lib/systems/animation/builders/HandPoseApplicator.js.map +1 -0
  1017. package/lib/systems/animation/builders/HandPoses.d.ts +186 -0
  1018. package/lib/systems/animation/builders/HandPoses.d.ts.map +1 -0
  1019. package/lib/systems/animation/builders/HandPoses.js +509 -0
  1020. package/lib/systems/animation/builders/HandPoses.js.map +1 -0
  1021. package/lib/systems/animation/builders/KeyframeConfig.d.ts +207 -0
  1022. package/lib/systems/animation/builders/KeyframeConfig.d.ts.map +1 -0
  1023. package/lib/systems/animation/builders/KeyframeConfig.js +264 -0
  1024. package/lib/systems/animation/builders/KeyframeConfig.js.map +1 -0
  1025. package/lib/systems/animation/builders/KeyframeInterpolation.d.ts +491 -0
  1026. package/lib/systems/animation/builders/KeyframeInterpolation.d.ts.map +1 -0
  1027. package/lib/systems/animation/builders/KeyframeInterpolation.js +252 -0
  1028. package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -0
  1029. package/lib/systems/animation/builders/KickPhaseApplicator.d.ts +119 -0
  1030. package/lib/systems/animation/builders/KickPhaseApplicator.d.ts.map +1 -0
  1031. package/lib/systems/animation/builders/KickPhaseApplicator.js +119 -0
  1032. package/lib/systems/animation/builders/KickPhaseApplicator.js.map +1 -0
  1033. package/lib/systems/animation/builders/KoreanGuardPositions.d.ts +208 -0
  1034. package/lib/systems/animation/builders/KoreanGuardPositions.d.ts.map +1 -0
  1035. package/lib/systems/animation/builders/KoreanGuardPositions.js +267 -0
  1036. package/lib/systems/animation/builders/KoreanGuardPositions.js.map +1 -0
  1037. package/lib/systems/animation/builders/MartialArtsAnimationBuilder.d.ts +1310 -0
  1038. package/lib/systems/animation/builders/MartialArtsAnimationBuilder.d.ts.map +1 -0
  1039. package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js +2857 -0
  1040. package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js.map +1 -0
  1041. package/lib/systems/animation/builders/MartialArtsConstants.d.ts +1034 -0
  1042. package/lib/systems/animation/builders/MartialArtsConstants.d.ts.map +1 -0
  1043. package/lib/systems/animation/builders/MartialArtsConstants.js +1644 -0
  1044. package/lib/systems/animation/builders/MartialArtsConstants.js.map +1 -0
  1045. package/lib/systems/animation/builders/MartialPoseApplicator.d.ts +54 -0
  1046. package/lib/systems/animation/builders/MartialPoseApplicator.d.ts.map +1 -0
  1047. package/lib/systems/animation/builders/MartialPoseApplicator.js +54 -0
  1048. package/lib/systems/animation/builders/MartialPoseApplicator.js.map +1 -0
  1049. package/lib/systems/animation/builders/PunchPhaseApplicator.d.ts +73 -0
  1050. package/lib/systems/animation/builders/PunchPhaseApplicator.d.ts.map +1 -0
  1051. package/lib/systems/animation/builders/PunchPhaseApplicator.js +68 -0
  1052. package/lib/systems/animation/builders/PunchPhaseApplicator.js.map +1 -0
  1053. package/lib/systems/animation/builders/SkeletonRig.d.ts +321 -0
  1054. package/lib/systems/animation/builders/SkeletonRig.d.ts.map +1 -0
  1055. package/lib/systems/animation/builders/SkeletonRig.js +330 -0
  1056. package/lib/systems/animation/builders/SkeletonRig.js.map +1 -0
  1057. package/lib/systems/animation/builders/TrigramGuardApplicator.d.ts +99 -0
  1058. package/lib/systems/animation/builders/TrigramGuardApplicator.d.ts.map +1 -0
  1059. package/lib/systems/animation/builders/TrigramGuardApplicator.js +185 -0
  1060. package/lib/systems/animation/builders/TrigramGuardApplicator.js.map +1 -0
  1061. package/lib/systems/animation/builders/index.d.ts +23 -0
  1062. package/lib/systems/animation/builders/index.d.ts.map +1 -0
  1063. package/lib/systems/animation/builders/index.js +13 -0
  1064. package/lib/systems/animation/catalogs/AttackAnimations.d.ts +523 -0
  1065. package/lib/systems/animation/catalogs/AttackAnimations.d.ts.map +1 -0
  1066. package/lib/systems/animation/catalogs/AttackAnimations.js +537 -0
  1067. package/lib/systems/animation/catalogs/AttackAnimations.js.map +1 -0
  1068. package/lib/systems/animation/catalogs/BasicAnimations.d.ts +84 -0
  1069. package/lib/systems/animation/catalogs/BasicAnimations.d.ts.map +1 -0
  1070. package/lib/systems/animation/catalogs/BasicAnimations.js +92 -0
  1071. package/lib/systems/animation/catalogs/BasicAnimations.js.map +1 -0
  1072. package/lib/systems/animation/catalogs/ComboAnimations.d.ts +370 -0
  1073. package/lib/systems/animation/catalogs/ComboAnimations.d.ts.map +1 -0
  1074. package/lib/systems/animation/catalogs/ComboAnimations.js +400 -0
  1075. package/lib/systems/animation/catalogs/ComboAnimations.js.map +1 -0
  1076. package/lib/systems/animation/catalogs/DarkOpsAnimations.d.ts +301 -0
  1077. package/lib/systems/animation/catalogs/DarkOpsAnimations.d.ts.map +1 -0
  1078. package/lib/systems/animation/catalogs/DarkOpsAnimations.js +322 -0
  1079. package/lib/systems/animation/catalogs/DarkOpsAnimations.js.map +1 -0
  1080. package/lib/systems/animation/catalogs/DefensiveAnimations.d.ts +134 -0
  1081. package/lib/systems/animation/catalogs/DefensiveAnimations.d.ts.map +1 -0
  1082. package/lib/systems/animation/catalogs/DefensiveAnimations.js +142 -0
  1083. package/lib/systems/animation/catalogs/DefensiveAnimations.js.map +1 -0
  1084. package/lib/systems/animation/catalogs/ElbowKneeAnimations.d.ts +437 -0
  1085. package/lib/systems/animation/catalogs/ElbowKneeAnimations.d.ts.map +1 -0
  1086. package/lib/systems/animation/catalogs/ElbowKneeAnimations.js +452 -0
  1087. package/lib/systems/animation/catalogs/ElbowKneeAnimations.js.map +1 -0
  1088. package/lib/systems/animation/catalogs/EnhancedAttackAnimations.d.ts +146 -0
  1089. package/lib/systems/animation/catalogs/EnhancedAttackAnimations.d.ts.map +1 -0
  1090. package/lib/systems/animation/catalogs/EnhancedAttackAnimations.js +100 -0
  1091. package/lib/systems/animation/catalogs/EnhancedAttackAnimations.js.map +1 -0
  1092. package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.d.ts +81 -0
  1093. package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.d.ts.map +1 -0
  1094. package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.js +94 -0
  1095. package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.js.map +1 -0
  1096. package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.d.ts +268 -0
  1097. package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.d.ts.map +1 -0
  1098. package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.js +196 -0
  1099. package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.js.map +1 -0
  1100. package/lib/systems/animation/catalogs/GamRedirectionAnimations.d.ts +64 -0
  1101. package/lib/systems/animation/catalogs/GamRedirectionAnimations.d.ts.map +1 -0
  1102. package/lib/systems/animation/catalogs/GamRedirectionAnimations.js +68 -0
  1103. package/lib/systems/animation/catalogs/GamRedirectionAnimations.js.map +1 -0
  1104. package/lib/systems/animation/catalogs/GamStanceAnimations.d.ts +111 -0
  1105. package/lib/systems/animation/catalogs/GamStanceAnimations.d.ts.map +1 -0
  1106. package/lib/systems/animation/catalogs/GamStanceAnimations.js +9 -0
  1107. package/lib/systems/animation/catalogs/GamStanceAnimations.js.map +1 -0
  1108. package/lib/systems/animation/catalogs/GamTechniqueAnimations.d.ts +82 -0
  1109. package/lib/systems/animation/catalogs/GamTechniqueAnimations.d.ts.map +1 -0
  1110. package/lib/systems/animation/catalogs/GamTechniqueAnimations.js +55 -0
  1111. package/lib/systems/animation/catalogs/GamTechniqueAnimations.js.map +1 -0
  1112. package/lib/systems/animation/catalogs/GanStanceAnimations.d.ts +122 -0
  1113. package/lib/systems/animation/catalogs/GanStanceAnimations.d.ts.map +1 -0
  1114. package/lib/systems/animation/catalogs/GanStanceAnimations.js +135 -0
  1115. package/lib/systems/animation/catalogs/GanStanceAnimations.js.map +1 -0
  1116. package/lib/systems/animation/catalogs/GanTechniqueAnimations.d.ts +78 -0
  1117. package/lib/systems/animation/catalogs/GanTechniqueAnimations.d.ts.map +1 -0
  1118. package/lib/systems/animation/catalogs/GanTechniqueAnimations.js +83 -0
  1119. package/lib/systems/animation/catalogs/GanTechniqueAnimations.js.map +1 -0
  1120. package/lib/systems/animation/catalogs/GeonStanceAnimations.d.ts +323 -0
  1121. package/lib/systems/animation/catalogs/GeonStanceAnimations.d.ts.map +1 -0
  1122. package/lib/systems/animation/catalogs/GeonStanceAnimations.js +341 -0
  1123. package/lib/systems/animation/catalogs/GeonStanceAnimations.js.map +1 -0
  1124. package/lib/systems/animation/catalogs/GonGuardPoses.d.ts +84 -0
  1125. package/lib/systems/animation/catalogs/GonGuardPoses.d.ts.map +1 -0
  1126. package/lib/systems/animation/catalogs/GonGuardPoses.js +6 -0
  1127. package/lib/systems/animation/catalogs/GonGuardPoses.js.map +1 -0
  1128. package/lib/systems/animation/catalogs/GonStanceAnimations.d.ts +134 -0
  1129. package/lib/systems/animation/catalogs/GonStanceAnimations.d.ts.map +1 -0
  1130. package/lib/systems/animation/catalogs/GonStanceAnimations.js +9 -0
  1131. package/lib/systems/animation/catalogs/GonStanceAnimations.js.map +1 -0
  1132. package/lib/systems/animation/catalogs/GonTechniqueAnimations.d.ts +265 -0
  1133. package/lib/systems/animation/catalogs/GonTechniqueAnimations.d.ts.map +1 -0
  1134. package/lib/systems/animation/catalogs/GonTechniqueAnimations.js +13 -0
  1135. package/lib/systems/animation/catalogs/GonTechniqueAnimations.js.map +1 -0
  1136. package/lib/systems/animation/catalogs/GrapplingAnimations.d.ts +452 -0
  1137. package/lib/systems/animation/catalogs/GrapplingAnimations.d.ts.map +1 -0
  1138. package/lib/systems/animation/catalogs/GrapplingAnimations.js +475 -0
  1139. package/lib/systems/animation/catalogs/GrapplingAnimations.js.map +1 -0
  1140. package/lib/systems/animation/catalogs/JinStanceAnimations.d.ts +98 -0
  1141. package/lib/systems/animation/catalogs/JinStanceAnimations.d.ts.map +1 -0
  1142. package/lib/systems/animation/catalogs/JinStanceAnimations.js +111 -0
  1143. package/lib/systems/animation/catalogs/JinStanceAnimations.js.map +1 -0
  1144. package/lib/systems/animation/catalogs/JinTechniqueAnimations.d.ts +80 -0
  1145. package/lib/systems/animation/catalogs/JinTechniqueAnimations.d.ts.map +1 -0
  1146. package/lib/systems/animation/catalogs/JinTechniqueAnimations.js +89 -0
  1147. package/lib/systems/animation/catalogs/JinTechniqueAnimations.js.map +1 -0
  1148. package/lib/systems/animation/catalogs/KickAnimations.d.ts +916 -0
  1149. package/lib/systems/animation/catalogs/KickAnimations.d.ts.map +1 -0
  1150. package/lib/systems/animation/catalogs/KickAnimations.js +929 -0
  1151. package/lib/systems/animation/catalogs/KickAnimations.js.map +1 -0
  1152. package/lib/systems/animation/catalogs/LiStanceAnimations.d.ts +140 -0
  1153. package/lib/systems/animation/catalogs/LiStanceAnimations.d.ts.map +1 -0
  1154. package/lib/systems/animation/catalogs/LiStanceAnimations.js +122 -0
  1155. package/lib/systems/animation/catalogs/LiStanceAnimations.js.map +1 -0
  1156. package/lib/systems/animation/catalogs/LiTechniqueAnimations.d.ts +104 -0
  1157. package/lib/systems/animation/catalogs/LiTechniqueAnimations.d.ts.map +1 -0
  1158. package/lib/systems/animation/catalogs/LiTechniqueAnimations.js +90 -0
  1159. package/lib/systems/animation/catalogs/LiTechniqueAnimations.js.map +1 -0
  1160. package/lib/systems/animation/catalogs/MovementAnimations.d.ts +344 -0
  1161. package/lib/systems/animation/catalogs/MovementAnimations.d.ts.map +1 -0
  1162. package/lib/systems/animation/catalogs/MovementAnimations.js +371 -0
  1163. package/lib/systems/animation/catalogs/MovementAnimations.js.map +1 -0
  1164. package/lib/systems/animation/catalogs/PunchAnimations.d.ts +496 -0
  1165. package/lib/systems/animation/catalogs/PunchAnimations.d.ts.map +1 -0
  1166. package/lib/systems/animation/catalogs/PunchAnimations.js +498 -0
  1167. package/lib/systems/animation/catalogs/PunchAnimations.js.map +1 -0
  1168. package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts +184 -0
  1169. package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts.map +1 -0
  1170. package/lib/systems/animation/catalogs/RecoveryAnimations.js +465 -0
  1171. package/lib/systems/animation/catalogs/RecoveryAnimations.js.map +1 -0
  1172. package/lib/systems/animation/catalogs/SonStanceAnimations.d.ts +149 -0
  1173. package/lib/systems/animation/catalogs/SonStanceAnimations.d.ts.map +1 -0
  1174. package/lib/systems/animation/catalogs/SonStanceAnimations.js +131 -0
  1175. package/lib/systems/animation/catalogs/SonStanceAnimations.js.map +1 -0
  1176. package/lib/systems/animation/catalogs/SonTechniqueAnimations.d.ts +90 -0
  1177. package/lib/systems/animation/catalogs/SonTechniqueAnimations.d.ts.map +1 -0
  1178. package/lib/systems/animation/catalogs/SonTechniqueAnimations.js +95 -0
  1179. package/lib/systems/animation/catalogs/SonTechniqueAnimations.js.map +1 -0
  1180. package/lib/systems/animation/catalogs/SpecializedPunchAnimations.d.ts +178 -0
  1181. package/lib/systems/animation/catalogs/SpecializedPunchAnimations.d.ts.map +1 -0
  1182. package/lib/systems/animation/catalogs/SpecializedPunchAnimations.js +188 -0
  1183. package/lib/systems/animation/catalogs/SpecializedPunchAnimations.js.map +1 -0
  1184. package/lib/systems/animation/catalogs/StanceAnimations.d.ts +687 -0
  1185. package/lib/systems/animation/catalogs/StanceAnimations.d.ts.map +1 -0
  1186. package/lib/systems/animation/catalogs/StanceAnimations.js +840 -0
  1187. package/lib/systems/animation/catalogs/StanceAnimations.js.map +1 -0
  1188. package/lib/systems/animation/catalogs/StanceAttackAnimations.d.ts +483 -0
  1189. package/lib/systems/animation/catalogs/StanceAttackAnimations.d.ts.map +1 -0
  1190. package/lib/systems/animation/catalogs/StanceAttackAnimations.js +2369 -0
  1191. package/lib/systems/animation/catalogs/StanceAttackAnimations.js.map +1 -0
  1192. package/lib/systems/animation/catalogs/StanceGuardPoses.d.ts +327 -0
  1193. package/lib/systems/animation/catalogs/StanceGuardPoses.d.ts.map +1 -0
  1194. package/lib/systems/animation/catalogs/StanceGuardPoses.js +655 -0
  1195. package/lib/systems/animation/catalogs/StanceGuardPoses.js.map +1 -0
  1196. package/lib/systems/animation/catalogs/StanceIdleAnimations.d.ts +255 -0
  1197. package/lib/systems/animation/catalogs/StanceIdleAnimations.d.ts.map +1 -0
  1198. package/lib/systems/animation/catalogs/StanceIdleAnimations.js +446 -0
  1199. package/lib/systems/animation/catalogs/StanceIdleAnimations.js.map +1 -0
  1200. package/lib/systems/animation/catalogs/StanceLocomotionAnimations.d.ts +207 -0
  1201. package/lib/systems/animation/catalogs/StanceLocomotionAnimations.d.ts.map +1 -0
  1202. package/lib/systems/animation/catalogs/StanceLocomotionAnimations.js +309 -0
  1203. package/lib/systems/animation/catalogs/StanceLocomotionAnimations.js.map +1 -0
  1204. package/lib/systems/animation/catalogs/StepAnimations.d.ts +274 -0
  1205. package/lib/systems/animation/catalogs/StepAnimations.d.ts.map +1 -0
  1206. package/lib/systems/animation/catalogs/StepAnimations.js +73 -0
  1207. package/lib/systems/animation/catalogs/StepAnimations.js.map +1 -0
  1208. package/lib/systems/animation/catalogs/StepSkeletalAnimations.d.ts +100 -0
  1209. package/lib/systems/animation/catalogs/StepSkeletalAnimations.d.ts.map +1 -0
  1210. package/lib/systems/animation/catalogs/StepSkeletalAnimations.js +99 -0
  1211. package/lib/systems/animation/catalogs/StepSkeletalAnimations.js.map +1 -0
  1212. package/lib/systems/animation/catalogs/TaeJointLockAnimations.d.ts +170 -0
  1213. package/lib/systems/animation/catalogs/TaeJointLockAnimations.d.ts.map +1 -0
  1214. package/lib/systems/animation/catalogs/TaeJointLockAnimations.js +141 -0
  1215. package/lib/systems/animation/catalogs/TaeJointLockAnimations.js.map +1 -0
  1216. package/lib/systems/animation/catalogs/TaeStanceAnimations.d.ts +120 -0
  1217. package/lib/systems/animation/catalogs/TaeStanceAnimations.d.ts.map +1 -0
  1218. package/lib/systems/animation/catalogs/TaeStanceAnimations.js +139 -0
  1219. package/lib/systems/animation/catalogs/TaeStanceAnimations.js.map +1 -0
  1220. package/lib/systems/animation/catalogs/index.d.ts +43 -0
  1221. package/lib/systems/animation/catalogs/index.d.ts.map +1 -0
  1222. package/lib/systems/animation/catalogs/index.js +36 -0
  1223. package/lib/systems/animation/constants/AnatomicalLimits.d.ts +234 -0
  1224. package/lib/systems/animation/constants/AnatomicalLimits.d.ts.map +1 -0
  1225. package/lib/systems/animation/constants/AnatomicalLimits.js +61 -0
  1226. package/lib/systems/animation/constants/AnatomicalLimits.js.map +1 -0
  1227. package/lib/systems/animation/constants/index.d.ts +13 -0
  1228. package/lib/systems/animation/constants/index.d.ts.map +1 -0
  1229. package/lib/systems/animation/core/AnimationHitTiming.d.ts +184 -0
  1230. package/lib/systems/animation/core/AnimationHitTiming.d.ts.map +1 -0
  1231. package/lib/systems/animation/core/AnimationHitTiming.js +766 -0
  1232. package/lib/systems/animation/core/AnimationHitTiming.js.map +1 -0
  1233. package/lib/systems/animation/core/AnimationOptimizations.d.ts +221 -0
  1234. package/lib/systems/animation/core/AnimationOptimizations.d.ts.map +1 -0
  1235. package/lib/systems/animation/core/AnimationOptimizations.js +322 -0
  1236. package/lib/systems/animation/core/AnimationOptimizations.js.map +1 -0
  1237. package/lib/systems/animation/core/AnimationPriority.d.ts +391 -0
  1238. package/lib/systems/animation/core/AnimationPriority.d.ts.map +1 -0
  1239. package/lib/systems/animation/core/AnimationPriority.js +349 -0
  1240. package/lib/systems/animation/core/AnimationPriority.js.map +1 -0
  1241. package/lib/systems/animation/core/AnimationRegistry.d.ts +220 -0
  1242. package/lib/systems/animation/core/AnimationRegistry.d.ts.map +1 -0
  1243. package/lib/systems/animation/core/AnimationRegistry.js +416 -0
  1244. package/lib/systems/animation/core/AnimationRegistry.js.map +1 -0
  1245. package/lib/systems/animation/core/AnimationStateMachine.d.ts +701 -0
  1246. package/lib/systems/animation/core/AnimationStateMachine.d.ts.map +1 -0
  1247. package/lib/systems/animation/core/AnimationStateMachine.js +1458 -0
  1248. package/lib/systems/animation/core/AnimationStateMachine.js.map +1 -0
  1249. package/lib/systems/animation/core/AnimationTransitions.d.ts +275 -0
  1250. package/lib/systems/animation/core/AnimationTransitions.d.ts.map +1 -0
  1251. package/lib/systems/animation/core/AnimationTransitions.js +920 -0
  1252. package/lib/systems/animation/core/AnimationTransitions.js.map +1 -0
  1253. package/lib/systems/animation/core/LateralityTransform.d.ts +120 -0
  1254. package/lib/systems/animation/core/LateralityTransform.d.ts.map +1 -0
  1255. package/lib/systems/animation/core/LateralityTransform.js +204 -0
  1256. package/lib/systems/animation/core/LateralityTransform.js.map +1 -0
  1257. package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts +171 -0
  1258. package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts.map +1 -0
  1259. package/lib/systems/animation/core/RecoveryPhaseEnhancer.js +122 -0
  1260. package/lib/systems/animation/core/RecoveryPhaseEnhancer.js.map +1 -0
  1261. package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts +303 -0
  1262. package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts.map +1 -0
  1263. package/lib/systems/animation/core/TechniqueAnimationMapper.js +770 -0
  1264. package/lib/systems/animation/core/TechniqueAnimationMapper.js.map +1 -0
  1265. package/lib/systems/animation/core/TechniqueAnimationMapping.d.ts +74 -0
  1266. package/lib/systems/animation/core/TechniqueAnimationMapping.d.ts.map +1 -0
  1267. package/lib/systems/animation/core/TechniqueAnimationMapping.js +1313 -0
  1268. package/lib/systems/animation/core/TechniqueAnimationMapping.js.map +1 -0
  1269. package/lib/systems/animation/core/TrigramAnimationMapping.d.ts +286 -0
  1270. package/lib/systems/animation/core/TrigramAnimationMapping.d.ts.map +1 -0
  1271. package/lib/systems/animation/core/TrigramAnimationMapping.js +6 -0
  1272. package/lib/systems/animation/core/TrigramStanceTransitions.d.ts +186 -0
  1273. package/lib/systems/animation/core/TrigramStanceTransitions.d.ts.map +1 -0
  1274. package/lib/systems/animation/core/TrigramStanceTransitions.js +8 -0
  1275. package/lib/systems/animation/core/TrigramStanceTransitions.js.map +1 -0
  1276. package/lib/systems/animation/core/index.d.ts +23 -0
  1277. package/lib/systems/animation/core/index.d.ts.map +1 -0
  1278. package/lib/systems/animation/core/index.js +16 -0
  1279. package/lib/systems/animation/core/types.d.ts +1360 -0
  1280. package/lib/systems/animation/core/types.d.ts.map +1 -0
  1281. package/lib/systems/animation/core/types.js +539 -0
  1282. package/lib/systems/animation/core/types.js.map +1 -0
  1283. package/lib/systems/animation/index.d.ts +16 -0
  1284. package/lib/systems/animation/index.d.ts.map +1 -0
  1285. package/lib/systems/animation/index.js +63 -0
  1286. package/lib/systems/animation/systems/AdvancedJointMovements.d.ts +614 -0
  1287. package/lib/systems/animation/systems/AdvancedJointMovements.d.ts.map +1 -0
  1288. package/lib/systems/animation/systems/AdvancedJointMovements.js +95 -0
  1289. package/lib/systems/animation/systems/AdvancedJointMovements.js.map +1 -0
  1290. package/lib/systems/animation/systems/BodyFacingSystem.d.ts +331 -0
  1291. package/lib/systems/animation/systems/BodyFacingSystem.d.ts.map +1 -0
  1292. package/lib/systems/animation/systems/BodyFacingSystem.js +327 -0
  1293. package/lib/systems/animation/systems/BodyFacingSystem.js.map +1 -0
  1294. package/lib/systems/animation/systems/FacialExpressions.d.ts +167 -0
  1295. package/lib/systems/animation/systems/FacialExpressions.d.ts.map +1 -0
  1296. package/lib/systems/animation/systems/FacialExpressions.js +76 -0
  1297. package/lib/systems/animation/systems/FacialExpressions.js.map +1 -0
  1298. package/lib/systems/animation/systems/FallAnimations.d.ts +174 -0
  1299. package/lib/systems/animation/systems/FallAnimations.d.ts.map +1 -0
  1300. package/lib/systems/animation/systems/FallAnimations.js +104 -0
  1301. package/lib/systems/animation/systems/FallAnimations.js.map +1 -0
  1302. package/lib/systems/animation/systems/HeadMovements.d.ts +152 -0
  1303. package/lib/systems/animation/systems/HeadMovements.d.ts.map +1 -0
  1304. package/lib/systems/animation/systems/HeadMovements.js +2 -0
  1305. package/lib/systems/animation/systems/MuscleActivation.d.ts +163 -0
  1306. package/lib/systems/animation/systems/MuscleActivation.d.ts.map +1 -0
  1307. package/lib/systems/animation/systems/MuscleActivation.js +427 -0
  1308. package/lib/systems/animation/systems/MuscleActivation.js.map +1 -0
  1309. package/lib/systems/animation/systems/RecoveryVisualization.d.ts +142 -0
  1310. package/lib/systems/animation/systems/RecoveryVisualization.d.ts.map +1 -0
  1311. package/lib/systems/animation/systems/RecoveryVisualization.js +1 -0
  1312. package/lib/systems/animation/systems/index.d.ts +17 -0
  1313. package/lib/systems/animation/systems/index.d.ts.map +1 -0
  1314. package/lib/systems/animation/systems/index.js +7 -0
  1315. package/lib/systems/animation/utils/AnimationMirror.d.ts +157 -0
  1316. package/lib/systems/animation/utils/AnimationMirror.d.ts.map +1 -0
  1317. package/lib/systems/animation/utils/AnimationMirror.js +30 -0
  1318. package/lib/systems/animation/utils/AnimationMirror.js.map +1 -0
  1319. package/lib/systems/audio/BoneImpactAudioSystem.d.ts +182 -0
  1320. package/lib/systems/audio/BoneImpactAudioSystem.d.ts.map +1 -0
  1321. package/lib/systems/audio/index.d.ts +7 -0
  1322. package/lib/systems/audio/index.d.ts.map +1 -0
  1323. package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts +149 -0
  1324. package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts.map +1 -0
  1325. package/lib/systems/bodypart/BodyPartDamageIntegration.js +38 -0
  1326. package/lib/systems/bodypart/BodyPartDamageIntegration.js.map +1 -0
  1327. package/lib/systems/bodypart/BodyPartHealthSystem.d.ts +233 -0
  1328. package/lib/systems/bodypart/BodyPartHealthSystem.d.ts.map +1 -0
  1329. package/lib/systems/bodypart/BodyPartHealthSystem.js +476 -0
  1330. package/lib/systems/bodypart/BodyPartHealthSystem.js.map +1 -0
  1331. package/lib/systems/bodypart/BodyPartPositionMapping.d.ts +116 -0
  1332. package/lib/systems/bodypart/BodyPartPositionMapping.d.ts.map +1 -0
  1333. package/lib/systems/bodypart/BodyPartPositionMapping.js +122 -0
  1334. package/lib/systems/bodypart/BodyPartPositionMapping.js.map +1 -0
  1335. package/lib/systems/bodypart/CombatInjuryIntegration.d.ts +191 -0
  1336. package/lib/systems/bodypart/CombatInjuryIntegration.d.ts.map +1 -0
  1337. package/lib/systems/bodypart/CombatInjuryIntegration.js +169 -0
  1338. package/lib/systems/bodypart/CombatInjuryIntegration.js.map +1 -0
  1339. package/lib/systems/bodypart/InjuryIntegration.d.ts +39 -0
  1340. package/lib/systems/bodypart/InjuryIntegration.d.ts.map +1 -0
  1341. package/lib/systems/bodypart/InjuryTracker.d.ts +256 -0
  1342. package/lib/systems/bodypart/InjuryTracker.d.ts.map +1 -0
  1343. package/lib/systems/bodypart/InjuryTracker.js +240 -0
  1344. package/lib/systems/bodypart/InjuryTracker.js.map +1 -0
  1345. package/lib/systems/bodypart/MovementPenaltySystem.d.ts +191 -0
  1346. package/lib/systems/bodypart/MovementPenaltySystem.d.ts.map +1 -0
  1347. package/lib/systems/bodypart/MovementPenaltySystem.js +255 -0
  1348. package/lib/systems/bodypart/MovementPenaltySystem.js.map +1 -0
  1349. package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts +137 -0
  1350. package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts.map +1 -0
  1351. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js +175 -0
  1352. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js.map +1 -0
  1353. package/lib/systems/bodypart/index.d.ts +22 -0
  1354. package/lib/systems/bodypart/index.d.ts.map +1 -0
  1355. package/lib/systems/bodypart/index.js +8 -0
  1356. package/lib/systems/bodypart/types.d.ts +453 -0
  1357. package/lib/systems/bodypart/types.d.ts.map +1 -0
  1358. package/lib/systems/bodypart/types.js +157 -0
  1359. package/lib/systems/bodypart/types.js.map +1 -0
  1360. package/lib/systems/breathing/BreathingDisruptionSystem.d.ts +289 -0
  1361. package/lib/systems/breathing/BreathingDisruptionSystem.d.ts.map +1 -0
  1362. package/lib/systems/breathing/BreathingDisruptionSystem.js +388 -0
  1363. package/lib/systems/breathing/BreathingDisruptionSystem.js.map +1 -0
  1364. package/lib/systems/breathing/feedback.d.ts +131 -0
  1365. package/lib/systems/breathing/feedback.d.ts.map +1 -0
  1366. package/lib/systems/breathing/feedback.js +80 -0
  1367. package/lib/systems/breathing/feedback.js.map +1 -0
  1368. package/lib/systems/breathing/index.d.ts +12 -0
  1369. package/lib/systems/breathing/index.d.ts.map +1 -0
  1370. package/lib/systems/breathing/index.js +3 -0
  1371. package/lib/systems/breathing/integration.d.ts +140 -0
  1372. package/lib/systems/breathing/integration.d.ts.map +1 -0
  1373. package/lib/systems/breathing/integration.js +194 -0
  1374. package/lib/systems/breathing/integration.js.map +1 -0
  1375. package/lib/systems/combat/AICounterAttackIntegration.d.ts +223 -0
  1376. package/lib/systems/combat/AICounterAttackIntegration.d.ts.map +1 -0
  1377. package/lib/systems/combat/BalanceSystem.d.ts +667 -0
  1378. package/lib/systems/combat/BalanceSystem.d.ts.map +1 -0
  1379. package/lib/systems/combat/BalanceSystem.js +811 -0
  1380. package/lib/systems/combat/BalanceSystem.js.map +1 -0
  1381. package/lib/systems/combat/BreakingStatusEffects.d.ts +96 -0
  1382. package/lib/systems/combat/BreakingStatusEffects.d.ts.map +1 -0
  1383. package/lib/systems/combat/BreakingStatusEffects.js +60 -0
  1384. package/lib/systems/combat/BreakingStatusEffects.js.map +1 -0
  1385. package/lib/systems/combat/CombatStateSystem.d.ts +264 -0
  1386. package/lib/systems/combat/CombatStateSystem.d.ts.map +1 -0
  1387. package/lib/systems/combat/CombatStateSystem.js +353 -0
  1388. package/lib/systems/combat/CombatStateSystem.js.map +1 -0
  1389. package/lib/systems/combat/ConsciousnessSystem.d.ts +402 -0
  1390. package/lib/systems/combat/ConsciousnessSystem.d.ts.map +1 -0
  1391. package/lib/systems/combat/ConsciousnessSystem.js +529 -0
  1392. package/lib/systems/combat/ConsciousnessSystem.js.map +1 -0
  1393. package/lib/systems/combat/FallIntegration.d.ts +82 -0
  1394. package/lib/systems/combat/FallIntegration.d.ts.map +1 -0
  1395. package/lib/systems/combat/FallIntegration.js +100 -0
  1396. package/lib/systems/combat/FallIntegration.js.map +1 -0
  1397. package/lib/systems/combat/GrappleSystem.d.ts +264 -0
  1398. package/lib/systems/combat/GrappleSystem.d.ts.map +1 -0
  1399. package/lib/systems/combat/GrappleSystem.js +393 -0
  1400. package/lib/systems/combat/GrappleSystem.js.map +1 -0
  1401. package/lib/systems/combat/LimbExposureSystem.d.ts +150 -0
  1402. package/lib/systems/combat/LimbExposureSystem.d.ts.map +1 -0
  1403. package/lib/systems/combat/LimbExposureSystem.js +308 -0
  1404. package/lib/systems/combat/LimbExposureSystem.js.map +1 -0
  1405. package/lib/systems/combat/PainResponseSystem.d.ts +299 -0
  1406. package/lib/systems/combat/PainResponseSystem.d.ts.map +1 -0
  1407. package/lib/systems/combat/PainResponseSystem.js +401 -0
  1408. package/lib/systems/combat/PainResponseSystem.js.map +1 -0
  1409. package/lib/systems/combat/SlowMotionController.d.ts +123 -0
  1410. package/lib/systems/combat/SlowMotionController.d.ts.map +1 -0
  1411. package/lib/systems/combat/TrainingCombatSystem.d.ts +89 -0
  1412. package/lib/systems/combat/TrainingCombatSystem.d.ts.map +1 -0
  1413. package/lib/systems/combat/TrainingCombatSystem.js +224 -0
  1414. package/lib/systems/combat/TrainingCombatSystem.js.map +1 -0
  1415. package/lib/systems/combat/index.d.ts +16 -0
  1416. package/lib/systems/combat/index.d.ts.map +1 -0
  1417. package/lib/systems/combat/index.js +10 -0
  1418. package/lib/systems/combat/painConsciousnessUtils.d.ts +147 -0
  1419. package/lib/systems/combat/painConsciousnessUtils.d.ts.map +1 -0
  1420. package/lib/systems/combat/painConsciousnessUtils.js +185 -0
  1421. package/lib/systems/combat/painConsciousnessUtils.js.map +1 -0
  1422. package/lib/systems/combat/typeGuards.d.ts +25 -0
  1423. package/lib/systems/combat/typeGuards.d.ts.map +1 -0
  1424. package/lib/systems/combat/typeGuards.js +39 -0
  1425. package/lib/systems/combat/typeGuards.js.map +1 -0
  1426. package/lib/systems/combat/types.d.ts +197 -0
  1427. package/lib/systems/combat/types.d.ts.map +1 -0
  1428. package/lib/systems/effects.d.ts +40 -0
  1429. package/lib/systems/effects.d.ts.map +1 -0
  1430. package/lib/systems/effects.js +44 -0
  1431. package/lib/systems/effects.js.map +1 -0
  1432. package/lib/systems/game.d.ts +77 -0
  1433. package/lib/systems/game.d.ts.map +1 -0
  1434. package/lib/systems/game.js +20 -0
  1435. package/lib/systems/game.js.map +1 -0
  1436. package/lib/systems/index.d.ts +24 -0
  1437. package/lib/systems/index.d.ts.map +1 -0
  1438. package/lib/systems/index.js +281 -0
  1439. package/lib/systems/index.js.map +1 -0
  1440. package/lib/systems/movement/InjuryMovementModifier.d.ts +275 -0
  1441. package/lib/systems/movement/InjuryMovementModifier.d.ts.map +1 -0
  1442. package/lib/systems/movement/InjuryMovementModifier.js +281 -0
  1443. package/lib/systems/movement/InjuryMovementModifier.js.map +1 -0
  1444. package/lib/systems/movement/helpers/AccelerationUpdater.d.ts +61 -0
  1445. package/lib/systems/movement/helpers/AccelerationUpdater.d.ts.map +1 -0
  1446. package/lib/systems/movement/helpers/AccelerationUpdater.js +75 -0
  1447. package/lib/systems/movement/helpers/AccelerationUpdater.js.map +1 -0
  1448. package/lib/systems/movement/helpers/accelerationUtils.d.ts +85 -0
  1449. package/lib/systems/movement/helpers/accelerationUtils.d.ts.map +1 -0
  1450. package/lib/systems/movement/helpers/accelerationUtils.js +86 -0
  1451. package/lib/systems/movement/helpers/accelerationUtils.js.map +1 -0
  1452. package/lib/systems/movement/index.d.ts +16 -0
  1453. package/lib/systems/movement/index.d.ts.map +1 -0
  1454. package/lib/systems/movement/integration.d.ts +91 -0
  1455. package/lib/systems/movement/integration.d.ts.map +1 -0
  1456. package/lib/systems/physics/AttackMovementPhysics.d.ts +283 -0
  1457. package/lib/systems/physics/AttackMovementPhysics.d.ts.map +1 -0
  1458. package/lib/systems/physics/AttackMovementPhysics.js +272 -0
  1459. package/lib/systems/physics/AttackMovementPhysics.js.map +1 -0
  1460. package/lib/systems/physics/CollisionDetection.d.ts +323 -0
  1461. package/lib/systems/physics/CollisionDetection.d.ts.map +1 -0
  1462. package/lib/systems/physics/CollisionDetection.js +543 -0
  1463. package/lib/systems/physics/CollisionDetection.js.map +1 -0
  1464. package/lib/systems/physics/CoordinateMapper.d.ts +203 -0
  1465. package/lib/systems/physics/CoordinateMapper.d.ts.map +1 -0
  1466. package/lib/systems/physics/CoordinateMapper.js +242 -0
  1467. package/lib/systems/physics/CoordinateMapper.js.map +1 -0
  1468. package/lib/systems/physics/KnockbackPhysics.d.ts +367 -0
  1469. package/lib/systems/physics/KnockbackPhysics.d.ts.map +1 -0
  1470. package/lib/systems/physics/KnockbackPhysics.js +338 -0
  1471. package/lib/systems/physics/KnockbackPhysics.js.map +1 -0
  1472. package/lib/systems/physics/MovementPhysics.d.ts +428 -0
  1473. package/lib/systems/physics/MovementPhysics.d.ts.map +1 -0
  1474. package/lib/systems/physics/MovementPhysics.js +488 -0
  1475. package/lib/systems/physics/MovementPhysics.js.map +1 -0
  1476. package/lib/systems/physics/PhysicalReachCalculator.d.ts +261 -0
  1477. package/lib/systems/physics/PhysicalReachCalculator.d.ts.map +1 -0
  1478. package/lib/systems/physics/PhysicalReachCalculator.js +226 -0
  1479. package/lib/systems/physics/PhysicalReachCalculator.js.map +1 -0
  1480. package/lib/systems/physics/SpeedModifierSystem.d.ts +302 -0
  1481. package/lib/systems/physics/SpeedModifierSystem.d.ts.map +1 -0
  1482. package/lib/systems/physics/SpeedModifierSystem.js +301 -0
  1483. package/lib/systems/physics/SpeedModifierSystem.js.map +1 -0
  1484. package/lib/systems/physics/__tests__/PhysicsPerformance.bench.d.ts +16 -0
  1485. package/lib/systems/physics/__tests__/PhysicsPerformance.bench.d.ts.map +1 -0
  1486. package/lib/systems/physics/index.d.ts +21 -0
  1487. package/lib/systems/physics/index.d.ts.map +1 -0
  1488. package/lib/systems/physics/index.js +7 -0
  1489. package/lib/systems/player.d.ts +386 -0
  1490. package/lib/systems/player.d.ts.map +1 -0
  1491. package/lib/systems/trigram/KoreanCulture.d.ts +127 -0
  1492. package/lib/systems/trigram/KoreanCulture.d.ts.map +1 -0
  1493. package/lib/systems/trigram/KoreanCulture.js +194 -0
  1494. package/lib/systems/trigram/KoreanCulture.js.map +1 -0
  1495. package/lib/systems/trigram/KoreanTechniques.d.ts +59 -0
  1496. package/lib/systems/trigram/KoreanTechniques.d.ts.map +1 -0
  1497. package/lib/systems/trigram/KoreanTechniques.js +140 -0
  1498. package/lib/systems/trigram/KoreanTechniques.js.map +1 -0
  1499. package/lib/systems/trigram/StanceManager.d.ts +90 -0
  1500. package/lib/systems/trigram/StanceManager.d.ts.map +1 -0
  1501. package/lib/systems/trigram/StanceManager.js +192 -0
  1502. package/lib/systems/trigram/StanceManager.js.map +1 -0
  1503. package/lib/systems/trigram/TransitionCalculator.d.ts +132 -0
  1504. package/lib/systems/trigram/TransitionCalculator.d.ts.map +1 -0
  1505. package/lib/systems/trigram/TransitionCalculator.js +233 -0
  1506. package/lib/systems/trigram/TransitionCalculator.js.map +1 -0
  1507. package/lib/systems/trigram/TrigramCalculator.d.ts +63 -0
  1508. package/lib/systems/trigram/TrigramCalculator.d.ts.map +1 -0
  1509. package/lib/systems/trigram/TrigramCalculator.js +148 -0
  1510. package/lib/systems/trigram/TrigramCalculator.js.map +1 -0
  1511. package/lib/systems/trigram/index.d.ts +12 -0
  1512. package/lib/systems/trigram/index.d.ts.map +1 -0
  1513. package/lib/systems/trigram/index.js +17 -0
  1514. package/lib/systems/trigram/techniques/DarkOpsTechniques.d.ts +118 -0
  1515. package/lib/systems/trigram/techniques/DarkOpsTechniques.d.ts.map +1 -0
  1516. package/lib/systems/trigram/techniques/DarkOpsTechniques.js +683 -0
  1517. package/lib/systems/trigram/techniques/DarkOpsTechniques.js.map +1 -0
  1518. package/lib/systems/trigram/techniques/GamTechniques.d.ts +44 -0
  1519. package/lib/systems/trigram/techniques/GamTechniques.d.ts.map +1 -0
  1520. package/lib/systems/trigram/techniques/GamTechniques.js +293 -0
  1521. package/lib/systems/trigram/techniques/GamTechniques.js.map +1 -0
  1522. package/lib/systems/trigram/techniques/GanTechniques.d.ts +58 -0
  1523. package/lib/systems/trigram/techniques/GanTechniques.d.ts.map +1 -0
  1524. package/lib/systems/trigram/techniques/GanTechniques.js +323 -0
  1525. package/lib/systems/trigram/techniques/GanTechniques.js.map +1 -0
  1526. package/lib/systems/trigram/techniques/GeonTechniques.d.ts +23 -0
  1527. package/lib/systems/trigram/techniques/GeonTechniques.d.ts.map +1 -0
  1528. package/lib/systems/trigram/techniques/GeonTechniques.js +299 -0
  1529. package/lib/systems/trigram/techniques/GeonTechniques.js.map +1 -0
  1530. package/lib/systems/trigram/techniques/GonTechniques.d.ts +51 -0
  1531. package/lib/systems/trigram/techniques/GonTechniques.d.ts.map +1 -0
  1532. package/lib/systems/trigram/techniques/GonTechniques.js +399 -0
  1533. package/lib/systems/trigram/techniques/GonTechniques.js.map +1 -0
  1534. package/lib/systems/trigram/techniques/JinTechniques.d.ts +23 -0
  1535. package/lib/systems/trigram/techniques/JinTechniques.d.ts.map +1 -0
  1536. package/lib/systems/trigram/techniques/JinTechniques.js +253 -0
  1537. package/lib/systems/trigram/techniques/JinTechniques.js.map +1 -0
  1538. package/lib/systems/trigram/techniques/LiTechniques.d.ts +23 -0
  1539. package/lib/systems/trigram/techniques/LiTechniques.d.ts.map +1 -0
  1540. package/lib/systems/trigram/techniques/LiTechniques.js +253 -0
  1541. package/lib/systems/trigram/techniques/LiTechniques.js.map +1 -0
  1542. package/lib/systems/trigram/techniques/SonTechniques.d.ts +43 -0
  1543. package/lib/systems/trigram/techniques/SonTechniques.d.ts.map +1 -0
  1544. package/lib/systems/trigram/techniques/SonTechniques.js +293 -0
  1545. package/lib/systems/trigram/techniques/SonTechniques.js.map +1 -0
  1546. package/lib/systems/trigram/techniques/TaeTechniques.d.ts +23 -0
  1547. package/lib/systems/trigram/techniques/TaeTechniques.d.ts.map +1 -0
  1548. package/lib/systems/trigram/techniques/TaeTechniques.js +292 -0
  1549. package/lib/systems/trigram/techniques/TaeTechniques.js.map +1 -0
  1550. package/lib/systems/trigram/techniques/TechniqueConfig.d.ts +403 -0
  1551. package/lib/systems/trigram/techniques/TechniqueConfig.d.ts.map +1 -0
  1552. package/lib/systems/trigram/techniques/TechniqueConfig.js +493 -0
  1553. package/lib/systems/trigram/techniques/TechniqueConfig.js.map +1 -0
  1554. package/lib/systems/trigram/techniques/index.d.ts +54 -0
  1555. package/lib/systems/trigram/techniques/index.d.ts.map +1 -0
  1556. package/lib/systems/trigram/techniques/index.js +88 -0
  1557. package/lib/systems/trigram/techniques/index.js.map +1 -0
  1558. package/lib/systems/trigram/types/GonTechniqueExtensions.d.ts +506 -0
  1559. package/lib/systems/trigram/types/GonTechniqueExtensions.d.ts.map +1 -0
  1560. package/lib/systems/trigram/types/GonTechniqueExtensions.js +37 -0
  1561. package/lib/systems/trigram/types/GonTechniqueExtensions.js.map +1 -0
  1562. package/lib/systems/trigram/types.d.ts +288 -0
  1563. package/lib/systems/trigram/types.d.ts.map +1 -0
  1564. package/lib/systems/trigram/types.js +459 -0
  1565. package/lib/systems/trigram/types.js.map +1 -0
  1566. package/lib/systems/types.d.ts +1038 -0
  1567. package/lib/systems/types.d.ts.map +1 -0
  1568. package/lib/systems/types.js +872 -0
  1569. package/lib/systems/types.js.map +1 -0
  1570. package/lib/systems/vitalpoint/DamageCalculator.d.ts +255 -0
  1571. package/lib/systems/vitalpoint/DamageCalculator.d.ts.map +1 -0
  1572. package/lib/systems/vitalpoint/DamageCalculator.js +435 -0
  1573. package/lib/systems/vitalpoint/DamageCalculator.js.map +1 -0
  1574. package/lib/systems/vitalpoint/HitDetection.d.ts +11 -0
  1575. package/lib/systems/vitalpoint/HitDetection.d.ts.map +1 -0
  1576. package/lib/systems/vitalpoint/HitDetection.js +69 -0
  1577. package/lib/systems/vitalpoint/HitDetection.js.map +1 -0
  1578. package/lib/systems/vitalpoint/KoreanAnatomy.d.ts +361 -0
  1579. package/lib/systems/vitalpoint/KoreanAnatomy.d.ts.map +1 -0
  1580. package/lib/systems/vitalpoint/KoreanAnatomy.js +1709 -0
  1581. package/lib/systems/vitalpoint/KoreanAnatomy.js.map +1 -0
  1582. package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts +133 -0
  1583. package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts.map +1 -0
  1584. package/lib/systems/vitalpoint/KoreanVitalPoints.js +150 -0
  1585. package/lib/systems/vitalpoint/KoreanVitalPoints.js.map +1 -0
  1586. package/lib/systems/vitalpoint/MeridianVitalPointMapping.d.ts +92 -0
  1587. package/lib/systems/vitalpoint/MeridianVitalPointMapping.d.ts.map +1 -0
  1588. package/lib/systems/vitalpoint/MeridianVitalPointMapping.js +227 -0
  1589. package/lib/systems/vitalpoint/MeridianVitalPointMapping.js.map +1 -0
  1590. package/lib/systems/vitalpoint/VitalPointsData.d.ts +51 -0
  1591. package/lib/systems/vitalpoint/VitalPointsData.d.ts.map +1 -0
  1592. package/lib/systems/vitalpoint/VitalPointsData.js +1917 -0
  1593. package/lib/systems/vitalpoint/VitalPointsData.js.map +1 -0
  1594. package/lib/systems/vitalpoint/index.d.ts +12 -0
  1595. package/lib/systems/vitalpoint/index.d.ts.map +1 -0
  1596. package/lib/systems/vitalpoint/index.js +5 -0
  1597. package/lib/systems/vitalpoint/types.d.ts +417 -0
  1598. package/lib/systems/vitalpoint/types.d.ts.map +1 -0
  1599. package/lib/test/test-utils.d.ts +46 -0
  1600. package/lib/test/test-utils.d.ts.map +1 -0
  1601. package/lib/types/AccessibilityTypes.d.ts +232 -0
  1602. package/lib/types/AccessibilityTypes.d.ts.map +1 -0
  1603. package/lib/types/AccessibilityTypes.js +13 -0
  1604. package/lib/types/AccessibilityTypes.js.map +1 -0
  1605. package/lib/types/HtmlOverlayTypes.d.ts +161 -0
  1606. package/lib/types/HtmlOverlayTypes.d.ts.map +1 -0
  1607. package/lib/types/LayoutTypes.d.ts +330 -0
  1608. package/lib/types/LayoutTypes.d.ts.map +1 -0
  1609. package/lib/types/LayoutTypes.js +118 -0
  1610. package/lib/types/LayoutTypes.js.map +1 -0
  1611. package/lib/types/PhysicsTypes.d.ts +327 -0
  1612. package/lib/types/PhysicsTypes.d.ts.map +1 -0
  1613. package/lib/types/PhysicsTypes.js +105 -0
  1614. package/lib/types/PhysicsTypes.js.map +1 -0
  1615. package/lib/types/ResponsiveTypes.d.ts +210 -0
  1616. package/lib/types/ResponsiveTypes.d.ts.map +1 -0
  1617. package/lib/types/clothing.d.ts +298 -0
  1618. package/lib/types/clothing.d.ts.map +1 -0
  1619. package/lib/types/common.d.ts +1247 -0
  1620. package/lib/types/common.d.ts.map +1 -0
  1621. package/lib/types/common.js +622 -0
  1622. package/lib/types/common.js.map +1 -0
  1623. package/lib/types/constants/animations.d.ts +93 -0
  1624. package/lib/types/constants/animations.d.ts.map +1 -0
  1625. package/lib/types/constants/animations.js +26 -0
  1626. package/lib/types/constants/animations.js.map +1 -0
  1627. package/lib/types/constants/colors.d.ts +151 -0
  1628. package/lib/types/constants/colors.d.ts.map +1 -0
  1629. package/lib/types/constants/colors.js +155 -0
  1630. package/lib/types/constants/colors.js.map +1 -0
  1631. package/lib/types/constants/designSystem.d.ts +469 -0
  1632. package/lib/types/constants/designSystem.d.ts.map +1 -0
  1633. package/lib/types/constants/designSystem.js +406 -0
  1634. package/lib/types/constants/designSystem.js.map +1 -0
  1635. package/lib/types/constants/index.d.ts +181 -0
  1636. package/lib/types/constants/index.d.ts.map +1 -0
  1637. package/lib/types/constants/index.js +176 -0
  1638. package/lib/types/constants/index.js.map +1 -0
  1639. package/lib/types/constants/layout.d.ts +76 -0
  1640. package/lib/types/constants/layout.d.ts.map +1 -0
  1641. package/lib/types/constants/layout.js +37 -0
  1642. package/lib/types/constants/layout.js.map +1 -0
  1643. package/lib/types/constants/performance.d.ts +183 -0
  1644. package/lib/types/constants/performance.d.ts.map +1 -0
  1645. package/lib/types/constants/performance.js +134 -0
  1646. package/lib/types/constants/performance.js.map +1 -0
  1647. package/lib/types/constants/typography.d.ts +85 -0
  1648. package/lib/types/constants/typography.d.ts.map +1 -0
  1649. package/lib/types/constants/typography.js +110 -0
  1650. package/lib/types/constants/typography.js.map +1 -0
  1651. package/lib/types/constants/ui.d.ts +187 -0
  1652. package/lib/types/constants/ui.d.ts.map +1 -0
  1653. package/lib/types/constants/ui.js +113 -0
  1654. package/lib/types/constants/ui.js.map +1 -0
  1655. package/lib/types/facial.d.ts +266 -0
  1656. package/lib/types/facial.d.ts.map +1 -0
  1657. package/lib/types/facial.js +92 -0
  1658. package/lib/types/facial.js.map +1 -0
  1659. package/lib/types/hand-animation.d.ts +370 -0
  1660. package/lib/types/hand-animation.d.ts.map +1 -0
  1661. package/lib/types/hand-animation.js +55 -0
  1662. package/lib/types/hand-animation.js.map +1 -0
  1663. package/lib/types/index.d.ts +14 -0
  1664. package/lib/types/index.d.ts.map +1 -0
  1665. package/lib/types/index.js +112 -0
  1666. package/lib/types/index.js.map +1 -0
  1667. package/lib/types/injury.d.ts +58 -0
  1668. package/lib/types/injury.d.ts.map +1 -0
  1669. package/lib/types/injury.js +23 -0
  1670. package/lib/types/injury.js.map +1 -0
  1671. package/lib/types/muscle.d.ts +146 -0
  1672. package/lib/types/muscle.d.ts.map +1 -0
  1673. package/lib/types/muscle.js +22 -0
  1674. package/lib/types/muscle.js.map +1 -0
  1675. package/lib/types/physics.d.ts +606 -0
  1676. package/lib/types/physics.d.ts.map +1 -0
  1677. package/lib/types/physics.js +162 -0
  1678. package/lib/types/physics.js.map +1 -0
  1679. package/lib/types/physicsConstants.d.ts +270 -0
  1680. package/lib/types/physicsConstants.d.ts.map +1 -0
  1681. package/lib/types/physicsConstants.js +71 -0
  1682. package/lib/types/physicsConstants.js.map +1 -0
  1683. package/lib/types/player-visual.d.ts +299 -0
  1684. package/lib/types/player-visual.d.ts.map +1 -0
  1685. package/lib/types/skeletal.d.ts +693 -0
  1686. package/lib/types/skeletal.d.ts.map +1 -0
  1687. package/lib/types/skeletal.js +189 -0
  1688. package/lib/types/skeletal.js.map +1 -0
  1689. package/lib/types/technique.d.ts +175 -0
  1690. package/lib/types/technique.d.ts.map +1 -0
  1691. package/lib/types/techniqueId.d.ts +51 -0
  1692. package/lib/types/techniqueId.d.ts.map +1 -0
  1693. package/lib/types/techniqueId.js +55 -0
  1694. package/lib/types/techniqueId.js.map +1 -0
  1695. package/lib/utils/EventManager.d.ts +133 -0
  1696. package/lib/utils/EventManager.d.ts.map +1 -0
  1697. package/lib/utils/EventManager.js +1 -0
  1698. package/lib/utils/accessibility.d.ts +218 -0
  1699. package/lib/utils/accessibility.d.ts.map +1 -0
  1700. package/lib/utils/accessibility.js +167 -0
  1701. package/lib/utils/accessibility.js.map +1 -0
  1702. package/lib/utils/arenaWorldDimensions.d.ts +219 -0
  1703. package/lib/utils/arenaWorldDimensions.d.ts.map +1 -0
  1704. package/lib/utils/arenaWorldDimensions.js +154 -0
  1705. package/lib/utils/arenaWorldDimensions.js.map +1 -0
  1706. package/lib/utils/assetConfig.d.ts +39 -0
  1707. package/lib/utils/assetConfig.d.ts.map +1 -0
  1708. package/lib/utils/assetConfig.js +52 -0
  1709. package/lib/utils/assetConfig.js.map +1 -0
  1710. package/lib/utils/cameraShake.d.ts +115 -0
  1711. package/lib/utils/cameraShake.d.ts.map +1 -0
  1712. package/lib/utils/characterScaling.d.ts +305 -0
  1713. package/lib/utils/characterScaling.d.ts.map +1 -0
  1714. package/lib/utils/characterScaling.js +105 -0
  1715. package/lib/utils/characterScaling.js.map +1 -0
  1716. package/lib/utils/clothingColors.d.ts +120 -0
  1717. package/lib/utils/clothingColors.d.ts.map +1 -0
  1718. package/lib/utils/clothingMaterials.d.ts +65 -0
  1719. package/lib/utils/clothingMaterials.d.ts.map +1 -0
  1720. package/lib/utils/colorHelpers.d.ts +67 -0
  1721. package/lib/utils/colorHelpers.d.ts.map +1 -0
  1722. package/lib/utils/colorHelpers.js +81 -0
  1723. package/lib/utils/colorHelpers.js.map +1 -0
  1724. package/lib/utils/colorUtils.d.ts +113 -0
  1725. package/lib/utils/colorUtils.d.ts.map +1 -0
  1726. package/lib/utils/colorUtils.js +225 -0
  1727. package/lib/utils/colorUtils.js.map +1 -0
  1728. package/lib/utils/combatReadiness.d.ts +132 -0
  1729. package/lib/utils/combatReadiness.d.ts.map +1 -0
  1730. package/lib/utils/combatReadiness.js +176 -0
  1731. package/lib/utils/combatReadiness.js.map +1 -0
  1732. package/lib/utils/controlMapping.d.ts +171 -0
  1733. package/lib/utils/controlMapping.d.ts.map +1 -0
  1734. package/lib/utils/controlMapping.js +288 -0
  1735. package/lib/utils/controlMapping.js.map +1 -0
  1736. package/lib/utils/deviceDetection.d.ts +159 -0
  1737. package/lib/utils/deviceDetection.d.ts.map +1 -0
  1738. package/lib/utils/deviceDetection.js +337 -0
  1739. package/lib/utils/deviceDetection.js.map +1 -0
  1740. package/lib/utils/effectUtils.d.ts +63 -0
  1741. package/lib/utils/effectUtils.d.ts.map +1 -0
  1742. package/lib/utils/effectUtils.js +737 -0
  1743. package/lib/utils/effectUtils.js.map +1 -0
  1744. package/lib/utils/eventConstants.d.ts +25 -0
  1745. package/lib/utils/eventConstants.d.ts.map +1 -0
  1746. package/lib/utils/eventConstants.js +3 -0
  1747. package/lib/utils/eventConstants.js.map +1 -0
  1748. package/lib/utils/fabricTextures.d.ts +136 -0
  1749. package/lib/utils/fabricTextures.d.ts.map +1 -0
  1750. package/lib/utils/fabricTextures.js +301 -0
  1751. package/lib/utils/fabricTextures.js.map +1 -0
  1752. package/lib/utils/hapticFeedback.d.ts +224 -0
  1753. package/lib/utils/hapticFeedback.d.ts.map +1 -0
  1754. package/lib/utils/hapticFeedback.js +143 -0
  1755. package/lib/utils/hapticFeedback.js.map +1 -0
  1756. package/lib/utils/haptics.d.ts +139 -0
  1757. package/lib/utils/haptics.d.ts.map +1 -0
  1758. package/lib/utils/haptics.js +66 -0
  1759. package/lib/utils/haptics.js.map +1 -0
  1760. package/lib/utils/htmlOverlayHelpers.d.ts +168 -0
  1761. package/lib/utils/htmlOverlayHelpers.d.ts.map +1 -0
  1762. package/lib/utils/htmlOverlayHelpers.js +279 -0
  1763. package/lib/utils/htmlOverlayHelpers.js.map +1 -0
  1764. package/lib/utils/index.d.ts +15 -0
  1765. package/lib/utils/index.d.ts.map +1 -0
  1766. package/lib/utils/index.js +92 -0
  1767. package/lib/utils/index.js.map +1 -0
  1768. package/lib/utils/inputSystem.d.ts +154 -0
  1769. package/lib/utils/inputSystem.d.ts.map +1 -0
  1770. package/lib/utils/inputSystem.js +324 -0
  1771. package/lib/utils/inputSystem.js.map +1 -0
  1772. package/lib/utils/koreanThemeHelpers.d.ts +328 -0
  1773. package/lib/utils/koreanThemeHelpers.d.ts.map +1 -0
  1774. package/lib/utils/koreanThemeHelpers.js +348 -0
  1775. package/lib/utils/koreanThemeHelpers.js.map +1 -0
  1776. package/lib/utils/math.d.ts +80 -0
  1777. package/lib/utils/math.d.ts.map +1 -0
  1778. package/lib/utils/math.js +70 -0
  1779. package/lib/utils/math.js.map +1 -0
  1780. package/lib/utils/mobileLayoutHelpers.d.ts +52 -0
  1781. package/lib/utils/mobileLayoutHelpers.d.ts.map +1 -0
  1782. package/lib/utils/mobileLayoutHelpers.js +66 -0
  1783. package/lib/utils/mobileLayoutHelpers.js.map +1 -0
  1784. package/lib/utils/mobileUIUtils.d.ts +266 -0
  1785. package/lib/utils/mobileUIUtils.d.ts.map +1 -0
  1786. package/lib/utils/mobileUIUtils.js +33 -0
  1787. package/lib/utils/mobileUIUtils.js.map +1 -0
  1788. package/lib/utils/objectPool.d.ts +92 -0
  1789. package/lib/utils/objectPool.d.ts.map +1 -0
  1790. package/lib/utils/particlePool.d.ts +138 -0
  1791. package/lib/utils/particlePool.d.ts.map +1 -0
  1792. package/lib/utils/performance/PerformanceMonitor.d.ts +93 -0
  1793. package/lib/utils/performance/PerformanceMonitor.d.ts.map +1 -0
  1794. package/lib/utils/performance/PerformanceMonitor.js +155 -0
  1795. package/lib/utils/performance/PerformanceMonitor.js.map +1 -0
  1796. package/lib/utils/performance/PerformanceOverlay3D.d.ts +20 -0
  1797. package/lib/utils/performance/PerformanceOverlay3D.d.ts.map +1 -0
  1798. package/lib/utils/performance/PerformanceOverlay3D.js +200 -0
  1799. package/lib/utils/performance/PerformanceOverlay3D.js.map +1 -0
  1800. package/lib/utils/performance/index.d.ts +12 -0
  1801. package/lib/utils/performance/index.d.ts.map +1 -0
  1802. package/lib/utils/performance/index.js +3 -0
  1803. package/lib/utils/performance/usePerformanceMonitor.d.ts +46 -0
  1804. package/lib/utils/performance/usePerformanceMonitor.d.ts.map +1 -0
  1805. package/lib/utils/performance/usePerformanceMonitor.js +71 -0
  1806. package/lib/utils/performance/usePerformanceMonitor.js.map +1 -0
  1807. package/lib/utils/performanceOptimization.d.ts +142 -0
  1808. package/lib/utils/performanceOptimization.d.ts.map +1 -0
  1809. package/lib/utils/performanceOptimization.js +27 -0
  1810. package/lib/utils/performanceOptimization.js.map +1 -0
  1811. package/lib/utils/physicalAttributeValidation.d.ts +197 -0
  1812. package/lib/utils/physicalAttributeValidation.d.ts.map +1 -0
  1813. package/lib/utils/player3DHelpers.d.ts +82 -0
  1814. package/lib/utils/player3DHelpers.d.ts.map +1 -0
  1815. package/lib/utils/player3DHelpers.js +176 -0
  1816. package/lib/utils/player3DHelpers.js.map +1 -0
  1817. package/lib/utils/playerUtils.d.ts +137 -0
  1818. package/lib/utils/playerUtils.d.ts.map +1 -0
  1819. package/lib/utils/playerUtils.js +296 -0
  1820. package/lib/utils/playerUtils.js.map +1 -0
  1821. package/lib/utils/responsiveLayout.d.ts +207 -0
  1822. package/lib/utils/responsiveLayout.d.ts.map +1 -0
  1823. package/lib/utils/responsiveLayout.js +114 -0
  1824. package/lib/utils/responsiveLayout.js.map +1 -0
  1825. package/lib/utils/responsiveLayoutHelpers.d.ts +156 -0
  1826. package/lib/utils/responsiveLayoutHelpers.d.ts.map +1 -0
  1827. package/lib/utils/responsiveLayoutHelpers.js +253 -0
  1828. package/lib/utils/responsiveLayoutHelpers.js.map +1 -0
  1829. package/lib/utils/safeAreaUtils.d.ts +133 -0
  1830. package/lib/utils/safeAreaUtils.d.ts.map +1 -0
  1831. package/lib/utils/safeAreaUtils.js +65 -0
  1832. package/lib/utils/safeAreaUtils.js.map +1 -0
  1833. package/lib/utils/sharedPhysicsConfig.d.ts +125 -0
  1834. package/lib/utils/sharedPhysicsConfig.d.ts.map +1 -0
  1835. package/lib/utils/sharedPhysicsConfig.js +119 -0
  1836. package/lib/utils/sharedPhysicsConfig.js.map +1 -0
  1837. package/lib/utils/skeletonScaling.d.ts +285 -0
  1838. package/lib/utils/skeletonScaling.d.ts.map +1 -0
  1839. package/lib/utils/skeletonScaling.js +46 -0
  1840. package/lib/utils/skeletonScaling.js.map +1 -0
  1841. package/lib/utils/stanceHelpers.d.ts +85 -0
  1842. package/lib/utils/stanceHelpers.d.ts.map +1 -0
  1843. package/lib/utils/stanceHelpers.js +132 -0
  1844. package/lib/utils/stanceHelpers.js.map +1 -0
  1845. package/lib/utils/threeObjectPool.d.ts +323 -0
  1846. package/lib/utils/threeObjectPool.d.ts.map +1 -0
  1847. package/lib/utils/threeObjectPool.js +345 -0
  1848. package/lib/utils/threeObjectPool.js.map +1 -0
  1849. package/lib/utils/visualEffects.d.ts +358 -0
  1850. package/lib/utils/visualEffects.d.ts.map +1 -0
  1851. package/lib/utils/visualEffects.js +423 -0
  1852. package/lib/utils/visualEffects.js.map +1 -0
  1853. package/package.json +222 -0
@@ -0,0 +1,2857 @@
1
+ import { BoneName } from "../../../types/skeletal.js";
2
+ import { HAND_POSES, KICK_PHASES, MARTIAL_POSES, PUNCH_PHASES, calculateStanceWidth } from "./MartialArtsConstants.js";
3
+ import { KeyframeConfig } from "./KeyframeConfig.js";
4
+ import { applyHandPoseToConfig, applyHandPoseToKeyframe } from "./HandPoseApplicator.js";
5
+ import { applyHighPeakPhaseToConfig, applyKickPhaseToConfig, applyRoundhousePhaseToConfig, applySideKickPhaseToConfig } from "./KickPhaseApplicator.js";
6
+ import { applyMartialPoseToKeyframe } from "./MartialPoseApplicator.js";
7
+ import { applyPunchPhaseToConfig } from "./PunchPhaseApplicator.js";
8
+ import { applyTrigramGuardToConfig, getGuardArmBase } from "./TrigramGuardApplicator.js";
9
+ import * as THREE from "three";
10
+ //#region src/systems/animation/builders/MartialArtsAnimationBuilder.ts
11
+ /**
12
+ * Technique Timing Constants
13
+ *
14
+ * Defines standard timing phases for martial arts techniques to ensure
15
+ * all movements are visible and comprehensible. Minimum total duration
16
+ * is 0.5s to prevent "teleporting" strikes.
17
+ *
18
+ * Korean martial arts emphasize visible technique phases:
19
+ * - 준비 (Preparation) - Wind-up/chamber
20
+ * - 실행 (Execution) - Strike/extension
21
+ * - 회수 (Recovery) - Retraction
22
+ * - 복귀 (Return) - Return to stance
23
+ *
24
+ * @korean 기술타이밍상수
25
+ */
26
+ var TECHNIQUE_TIMING = {
27
+ FAST: {
28
+ chamber: .1,
29
+ extend: .15,
30
+ peak: .05,
31
+ retract: .1,
32
+ recover: .15,
33
+ total: .55
34
+ },
35
+ FAST_MEDIUM: {
36
+ chamber: .1,
37
+ extend: .15,
38
+ peak: .05,
39
+ retract: .1,
40
+ recover: .2,
41
+ total: .6
42
+ },
43
+ MEDIUM_LIGHT: {
44
+ chamber: .12,
45
+ extend: .18,
46
+ peak: .08,
47
+ retract: .1,
48
+ recover: .22,
49
+ total: .7
50
+ },
51
+ MEDIUM: {
52
+ chamber: .15,
53
+ extend: .2,
54
+ peak: .08,
55
+ retract: .12,
56
+ recover: .18,
57
+ total: .73
58
+ },
59
+ MEDIUM_HEAVY: {
60
+ chamber: .12,
61
+ extend: .2,
62
+ peak: .08,
63
+ retract: .15,
64
+ recover: .2,
65
+ total: .75
66
+ },
67
+ HEAVY_LIGHT: {
68
+ chamber: .15,
69
+ extend: .2,
70
+ peak: .1,
71
+ retract: .15,
72
+ recover: .2,
73
+ total: .8
74
+ },
75
+ HEAVY_MEDIUM: {
76
+ chamber: .12,
77
+ extend: .22,
78
+ peak: .08,
79
+ retract: .15,
80
+ recover: .28,
81
+ total: .85
82
+ },
83
+ HEAVY: {
84
+ chamber: .2,
85
+ extend: .3,
86
+ peak: .12,
87
+ retract: .15,
88
+ recover: .23,
89
+ total: 1
90
+ },
91
+ COMBO_FAST: {
92
+ chamber: .08,
93
+ extend: .12,
94
+ peak: .08,
95
+ retract: .1,
96
+ recover: .32,
97
+ total: .7
98
+ },
99
+ JUMPING: {
100
+ chamber: .18,
101
+ extend: .22,
102
+ peak: .08,
103
+ retract: .12,
104
+ recover: .3,
105
+ total: .9
106
+ },
107
+ COMBO_HEAVY: {
108
+ chamber: .12,
109
+ extend: .22,
110
+ peak: .08,
111
+ retract: .15,
112
+ recover: .38,
113
+ total: .95
114
+ },
115
+ SPINNING: {
116
+ chamber: .3,
117
+ extend: .35,
118
+ peak: .12,
119
+ retract: .15,
120
+ recover: .28,
121
+ total: 1.2
122
+ }
123
+ };
124
+ /**
125
+ * Martial Arts Animation Builder
126
+ *
127
+ * Fluent API for creating Korean martial arts animations with semantic methods.
128
+ * Designed to be readable by martial arts practitioners.
129
+ *
130
+ * @example
131
+ * ```typescript
132
+ * // Create a front kick (앞차기)
133
+ * const frontKick = MartialArtsAnimationBuilder
134
+ * .create("front_kick", "앞차기")
135
+ * .asAttack(0.55)
136
+ * .chamber() // 준비 - Knee lifts
137
+ * .withHighGuard() // 상단방어 - Protect face
138
+ * .extend() // 차기 - Leg extends
139
+ * .retract() // 회수 - Return to chamber
140
+ * .recover() // 복귀 - Return to stance
141
+ * .build();
142
+ * ```
143
+ *
144
+ * @korean 무술애니메이션빌더
145
+ */
146
+ var MartialArtsAnimationBuilder = class MartialArtsAnimationBuilder {
147
+ name;
148
+ koreanName;
149
+ duration = .5;
150
+ type = "attack";
151
+ loop = false;
152
+ keyframes = [];
153
+ currentTime = 0;
154
+ constructor(name, koreanName) {
155
+ this.name = name;
156
+ this.koreanName = koreanName;
157
+ }
158
+ /**
159
+ * Create new martial arts animation
160
+ * @param name - English animation name
161
+ * @param koreanName - Korean animation name (한글이름)
162
+ */
163
+ static create(name, koreanName) {
164
+ return new MartialArtsAnimationBuilder(name, koreanName);
165
+ }
166
+ /**
167
+ * Configure as attack animation (공격 애니메이션)
168
+ */
169
+ asAttack(duration) {
170
+ this.type = "attack";
171
+ this.duration = duration;
172
+ return this;
173
+ }
174
+ /**
175
+ * Configure as defense animation (방어 애니메이션)
176
+ */
177
+ asDefense(duration) {
178
+ this.type = "defense";
179
+ this.duration = duration;
180
+ return this;
181
+ }
182
+ /**
183
+ * Configure as movement animation (이동 애니메이션)
184
+ */
185
+ asMovement(duration, shouldLoop = false) {
186
+ this.type = "movement";
187
+ this.duration = duration;
188
+ this.loop = shouldLoop;
189
+ return this;
190
+ }
191
+ /**
192
+ * Configure as idle/stance animation (대기 애니메이션)
193
+ */
194
+ asIdle(duration, shouldLoop = true) {
195
+ this.type = "idle";
196
+ this.duration = duration;
197
+ this.loop = shouldLoop;
198
+ return this;
199
+ }
200
+ /**
201
+ * Configure as stance transition animation (자세 전환 애니메이션)
202
+ */
203
+ asStance(duration, shouldLoop = false) {
204
+ this.type = "stance";
205
+ this.duration = duration;
206
+ this.loop = shouldLoop;
207
+ return this;
208
+ }
209
+ /**
210
+ * Add initial fighting stance keyframe (기본 자세)
211
+ *
212
+ * Adds a neutral fighting stance at time 0 as the starting position
213
+ * for attack animations. This is the ready position before techniques.
214
+ *
215
+ * @korean 기본자세추가
216
+ */
217
+ stance() {
218
+ const guard = MARTIAL_POSES.GUARD;
219
+ this.addKeyframe(0, "linear", (kf) => {
220
+ kf.rotate(BoneName.HIP_R, 0, 0, 0);
221
+ kf.rotate(BoneName.HIP_L, 0, 0, 0);
222
+ kf.rotate(BoneName.KNEE_R, -.2, 0, 0);
223
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
224
+ kf.rotate(BoneName.FOOT_R, 0, 0, 0);
225
+ kf.rotate(BoneName.FOOT_L, 0, 0, 0);
226
+ kf.rotate(BoneName.PELVIS, 0, 0, 0);
227
+ kf.rotate(BoneName.SPINE_LOWER, 0, 0, 0);
228
+ kf.rotate(BoneName.SPINE_UPPER, 0, 0, 0);
229
+ kf.rotate(BoneName.HEAD, 0, 0, 0);
230
+ kf.rotate(BoneName.SHOULDER_L, ...guard.leftShoulder);
231
+ kf.rotate(BoneName.ELBOW_L, ...guard.leftElbow);
232
+ kf.rotate(BoneName.SHOULDER_R, ...guard.rightShoulder);
233
+ kf.rotate(BoneName.ELBOW_R, ...guard.rightElbow);
234
+ kf.position(BoneName.PELVIS, 0, 0, 0);
235
+ kf.position(BoneName.FOOT_R, 0, 0, 0);
236
+ kf.position(BoneName.FOOT_L, 0, 0, 0);
237
+ this.applyHandPose(kf, HAND_POSES.FIST, "both");
238
+ });
239
+ return this;
240
+ }
241
+ /**
242
+ * Chamber - Knee lifts to waist height (준비자세)
243
+ * Starting position for all kicks
244
+ *
245
+ * Authentic Korean martial arts chamber mechanics:
246
+ * - Hip flexed to 90° (1.57 rad) bringing knee to torso height
247
+ * - Knee bent tight (120° angle = -2.0 rad) for power generation
248
+ * - Support leg slightly bent for stability
249
+ * - Pelvis tilts back slightly for balance
250
+ * - Toe neutral, ready for extension
251
+ *
252
+ * @korean 준비자세
253
+ */
254
+ chamber(timeOffset = .1, easing = "ease-out") {
255
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
256
+ applyKickPhaseToConfig(kf, KICK_PHASES.CHAMBER, {
257
+ includeAnkle: true,
258
+ includePelvis: true
259
+ });
260
+ kf.rotate(BoneName.SPINE_LOWER, -.05, 0, 0);
261
+ kf.rotate(BoneName.SPINE_UPPER, -.03, 0, 0);
262
+ kf.rotate(BoneName.SHOULDER_L, -.6, .4, .3);
263
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.6);
264
+ kf.rotate(BoneName.SHOULDER_R, -.6, -.4, -.3);
265
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.6);
266
+ });
267
+ this.currentTime += timeOffset;
268
+ return this;
269
+ }
270
+ /**
271
+ * Extend - Leg snaps forward (차기 - 확장)
272
+ *
273
+ * Authentic Korean martial arts extension mechanics:
274
+ * - Hip maintains elevation (1.7 rad ~97°) for target height
275
+ * - Knee extends fully (0.1 rad ~6°) for maximum reach
276
+ * - Ankle dorsiflexes (0.5 rad ~29°) pointing toe/ball of foot
277
+ * - Pelvis tilts forward (0.15 rad ~9°) for hip thrust
278
+ * - Support leg bends deeper (-0.35 rad) for power transfer
279
+ * - Spine remains upright for balance
280
+ *
281
+ * This is the impact frame where the strike connects.
282
+ *
283
+ * @korean 차기확장
284
+ */
285
+ extend(timeOffset = .1, easing = "ease-out") {
286
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
287
+ applyKickPhaseToConfig(kf, KICK_PHASES.EXTENSION, {
288
+ includeAnkle: true,
289
+ includePelvis: true
290
+ });
291
+ kf.rotate(BoneName.SPINE_LOWER, .05, 0, 0);
292
+ kf.rotate(BoneName.SPINE_UPPER, .03, 0, 0);
293
+ kf.position(BoneName.FOOT_R, .6, 0, 0);
294
+ kf.rotate(BoneName.SHOULDER_L, -.9, .3, .4);
295
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.6);
296
+ kf.rotate(BoneName.SHOULDER_R, -.9, -.3, -.4);
297
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.6);
298
+ });
299
+ this.currentTime += timeOffset;
300
+ return this;
301
+ }
302
+ /**
303
+ * Retract - Return to chamber (회수)
304
+ *
305
+ * Authentic Korean martial arts retraction mechanics:
306
+ * - Leg returns THROUGH chamber position (proper 낙법)
307
+ * - Knee bends back to tight position (-2.0 rad)
308
+ * - Hip maintains height initially, then lowers
309
+ * - Foot resets to neutral from pointed position
310
+ * - Pelvis returns to neutral
311
+ * - Support leg maintains stability
312
+ *
313
+ * This is critical for proper technique - the leg must return
314
+ * through chamber to protect against counters and maintain balance.
315
+ *
316
+ * @korean 회수자세
317
+ */
318
+ retract(timeOffset = .15, easing = "ease-in") {
319
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
320
+ applyKickPhaseToConfig(kf, KICK_PHASES.CHAMBER, {
321
+ includeAnkle: true,
322
+ includePelvis: true,
323
+ resetFoot: false
324
+ });
325
+ kf.rotate(BoneName.SPINE_LOWER, -.05, 0, 0);
326
+ kf.rotate(BoneName.SPINE_UPPER, -.03, 0, 0);
327
+ kf.rotate(BoneName.FOOT_R, 0, 0, 0);
328
+ kf.position(BoneName.FOOT_R, 0, 0, 0);
329
+ kf.rotate(BoneName.SHOULDER_L, -.6, .4, .3);
330
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.6);
331
+ kf.rotate(BoneName.SHOULDER_R, -.6, -.4, -.3);
332
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.6);
333
+ });
334
+ this.currentTime += timeOffset;
335
+ return this;
336
+ }
337
+ /**
338
+ * Set down - Foot returns to ground (착지)
339
+ * @korean 착지
340
+ */
341
+ setDown(timeOffset = .1, easing = "ease-in") {
342
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
343
+ kf.rotate(BoneName.HIP_R, 0, 0, 0);
344
+ kf.rotate(BoneName.KNEE_R, -.15, 0, 0);
345
+ kf.rotate(BoneName.FOOT_R, 0, 0, 0);
346
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
347
+ });
348
+ this.currentTime += timeOffset;
349
+ return this;
350
+ }
351
+ /**
352
+ * Roundhouse chamber - Hip rotates for 돌려차기
353
+ *
354
+ * Authentic Taekwondo roundhouse chamber (돌려차기 준비):
355
+ * - Hip flexed and rotated out (~1.2 rad flex, ~0.8 rad external rotation)
356
+ * - Knee bent tight (-1.5 rad) preparing for snap
357
+ * - Pelvis begins rotation (-0.5 rad on Y-axis)
358
+ * - Spine counter-rotates for power (0.3 rad on Y-axis)
359
+ * - Support leg stable
360
+ * - Arms in high guard
361
+ *
362
+ * The hip rotation is KEY - it opens the hip for the circular strike path
363
+ * that defines a roundhouse kick vs. a front kick.
364
+ *
365
+ * @korean 돌려차기준비
366
+ */
367
+ roundhouseChamber(timeOffset = .1, easing = "ease-out") {
368
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
369
+ applyRoundhousePhaseToConfig(kf, KICK_PHASES.ROUNDHOUSE_CHAMBER);
370
+ kf.rotate(BoneName.HIP_L, 0, -.2, 0);
371
+ kf.rotate(BoneName.KNEE_L, -.3, 0, 0);
372
+ kf.rotate(BoneName.FOOT_L, 0, .79, 0);
373
+ kf.rotate(BoneName.PELVIS, 0, -.79, 0);
374
+ kf.rotate(BoneName.SPINE_LOWER, 0, -.4, 0);
375
+ kf.rotate(BoneName.SHOULDER_L, -.9, .3, .4);
376
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -2);
377
+ kf.rotate(BoneName.SHOULDER_R, -.9, -.3, -.4);
378
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 2);
379
+ });
380
+ this.currentTime += timeOffset;
381
+ return this;
382
+ }
383
+ /**
384
+ * Roundhouse extension - Full hip rotation for 돌려차기
385
+ *
386
+ * Authentic Taekwondo roundhouse extension (돌려차기 실행):
387
+ * - Hip fully extended with maximal rotation (1.2 rad flex, 1.6 rad rotation)
388
+ * - Knee snaps out to nearly straight (-0.1 rad)
389
+ * - Foot pointed and rotated (0.4 rad dorsiflexion, 0.3 rad rotation)
390
+ * - Pelvis fully rotated (-1.5 rad) providing hip whip power
391
+ * - Spine counter-rotates (0.8 rad) for torque generation
392
+ * - Foot position extends laterally (0.8m forward)
393
+ * - Support leg pivots on ball of foot
394
+ *
395
+ * Enhanced with compensatory torso lean (중심축회전):
396
+ * - Torso leans AWAY from kicking leg for balance
397
+ * - Increases reach and prevents backward fall
398
+ * - 12° lateral lean on Z-axis for high kicks
399
+ *
400
+ * The "snap" comes from the sudden knee extension combined with
401
+ * the hip rotation - this is the signature of Taekwondo roundhouse.
402
+ *
403
+ * @korean 돌려차기
404
+ */
405
+ roundhouseExtend(timeOffset = .15, easing = "ease-out") {
406
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
407
+ kf.rotate(BoneName.HIP_R, 1.2, 0, 1.6);
408
+ kf.rotate(BoneName.KNEE_R, -.1, 0, 0);
409
+ kf.rotate(BoneName.FOOT_R, .4, 0, .3);
410
+ kf.rotate(BoneName.PELVIS, 0, -1.5, 0);
411
+ this.applyKickTorsoLean(kf, "right", 12);
412
+ const upperSpineRot = kf.rotations.get(BoneName.SPINE_UPPER);
413
+ const lowerSpineRot = kf.rotations.get(BoneName.SPINE_LOWER);
414
+ kf.rotate(BoneName.SPINE_UPPER, upperSpineRot?.x ?? 0, .8, upperSpineRot?.z ?? 0);
415
+ kf.rotate(BoneName.SPINE_LOWER, lowerSpineRot?.x ?? 0, -1, lowerSpineRot?.z ?? 0);
416
+ kf.rotate(BoneName.HIP_L, 0, -.4, 0);
417
+ kf.rotate(BoneName.KNEE_L, -.35, 0, 0);
418
+ kf.rotate(BoneName.FOOT_L, 0, 1.57, 0);
419
+ kf.position(BoneName.FOOT_R, .8, 0, 0);
420
+ kf.rotate(BoneName.SHOULDER_L, -.9, .3, .4);
421
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.6);
422
+ kf.rotate(BoneName.SHOULDER_R, -.9, -.3, -.4);
423
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.6);
424
+ });
425
+ this.currentTime += timeOffset;
426
+ return this;
427
+ }
428
+ /**
429
+ * Side kick chamber - Turn sideways for 옆차기
430
+ *
431
+ * Authentic Taekwondo side kick chamber (옆차기 준비):
432
+ * - Body turns 90° sideways (pelvis -1.57 rad on Y-axis)
433
+ * - Hip flexed and chambered (1.3 rad flex, 0.3 rad rotation)
434
+ * - Knee bent tight (-1.6 rad) preparing for lateral thrust
435
+ * - Spine rotates with body (-1.2 rad on Y-axis)
436
+ * - Lean away from kick for balance (0.2 rad lean)
437
+ * - Support leg stable and aligned
438
+ * - Arms protect vital areas
439
+ *
440
+ * The perpendicular chamber is essential - the hips must turn
441
+ * sideways to allow the heel to drive through the target laterally.
442
+ *
443
+ * @korean 옆차기준비
444
+ */
445
+ sideKickChamber(timeOffset = .1, easing = "ease-out") {
446
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
447
+ applySideKickPhaseToConfig(kf, KICK_PHASES.SIDE_CHAMBER);
448
+ kf.rotate(BoneName.KNEE_L, -.3, 0, 0);
449
+ kf.rotate(BoneName.FOOT_L, 0, -.3, 0);
450
+ kf.rotate(BoneName.HIP_L, 0, -.3, 0);
451
+ kf.rotate(BoneName.HEAD, 0, -.5, 0);
452
+ kf.rotate(BoneName.SHOULDER_L, -.7, .5, .3);
453
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.5);
454
+ kf.rotate(BoneName.SHOULDER_R, -.7, -.5, -.3);
455
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.5);
456
+ });
457
+ this.currentTime += timeOffset;
458
+ return this;
459
+ }
460
+ /**
461
+ * Side kick extension - Lateral heel thrust for 옆차기
462
+ *
463
+ * Authentic Taekwondo side kick extension (옆차기 실행):
464
+ * - Hip extends laterally (1.3 rad flex, 0.7 rad rotation)
465
+ * - Knee extends fully (-0.1 rad) driving heel through target
466
+ * - Foot turned heel-first (0.4 rad on Y-axis)
467
+ * - Pelvis maintains 90° turn (-1.57 rad)
468
+ * - Spine leans away (0.4 rad) for counterbalance
469
+ * - Foot extends laterally (0.7m to side)
470
+ * - Support leg drives power
471
+ *
472
+ * The side kick is one of the most powerful kicks because the
473
+ * entire body mass drives through the heel in a straight line.
474
+ *
475
+ * @korean 옆차기
476
+ */
477
+ sideKickExtend(timeOffset = .1, easing = "linear") {
478
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
479
+ kf.rotate(BoneName.HIP_R, 1.3, 0, .7);
480
+ kf.rotate(BoneName.KNEE_R, -.1, 0, 0);
481
+ kf.rotate(BoneName.FOOT_R, 0, .4, 0);
482
+ kf.rotate(BoneName.PELVIS, 0, -1.57, 0);
483
+ kf.rotate(BoneName.SPINE_LOWER, 0, -1.2, .2);
484
+ kf.rotate(BoneName.SPINE_UPPER, 0, -1.2, .4);
485
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
486
+ kf.rotate(BoneName.FOOT_L, 0, -.3, 0);
487
+ kf.rotate(BoneName.HIP_L, 0, -.3, 0);
488
+ kf.position(BoneName.FOOT_R, .7, 0, 0);
489
+ kf.rotate(BoneName.HEAD, 0, -.5, 0);
490
+ kf.rotate(BoneName.SHOULDER_L, -.7, .5, .3);
491
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.5);
492
+ kf.rotate(BoneName.SHOULDER_R, -.7, -.5, -.3);
493
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.5);
494
+ });
495
+ this.currentTime += timeOffset;
496
+ return this;
497
+ }
498
+ /**
499
+ * Axe kick rise - Leg rises high for 내려차기
500
+ *
501
+ * Enhanced with hip rotation and support leg positioning
502
+ * @korean 내려차기올리기
503
+ */
504
+ axeKickRise(timeOffset = .15, easing = "ease-out") {
505
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
506
+ applyHighPeakPhaseToConfig(kf, KICK_PHASES.HIGH_PEAK);
507
+ kf.rotate(BoneName.PELVIS, -.2, -.6, 0);
508
+ kf.rotate(BoneName.SPINE_LOWER, -.2, -.3, 0);
509
+ kf.rotate(BoneName.SPINE_UPPER, -.15, -.2, 0);
510
+ kf.rotate(BoneName.HIP_L, 0, -.2, 0);
511
+ kf.rotate(BoneName.KNEE_L, -.3, 0, 0);
512
+ kf.rotate(BoneName.FOOT_L, 0, .5, 0);
513
+ kf.position(BoneName.FOOT_R, 0, 1.5, .3);
514
+ kf.rotate(BoneName.SHOULDER_L, -.9, .3, .4);
515
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -2);
516
+ kf.rotate(BoneName.SHOULDER_R, -.9, -.3, -.4);
517
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 2);
518
+ });
519
+ this.currentTime += timeOffset;
520
+ return this;
521
+ }
522
+ /**
523
+ * Axe kick chop - Downward heel strike for 내려차기
524
+ *
525
+ * Enhanced with hip rotation and guard hands
526
+ * @korean 내려차기
527
+ */
528
+ axeKickChop(timeOffset = .1, easing = "ease-in") {
529
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
530
+ kf.rotate(BoneName.HIP_R, .8, 0, 0);
531
+ kf.rotate(BoneName.KNEE_R, -.15, 0, 0);
532
+ kf.rotate(BoneName.FOOT_R, -.3, 0, 0);
533
+ kf.rotate(BoneName.PELVIS, .1, -.6, 0);
534
+ kf.rotate(BoneName.SPINE_LOWER, .1, -.3, 0);
535
+ kf.rotate(BoneName.KNEE_L, -.35, 0, 0);
536
+ kf.rotate(BoneName.FOOT_L, 0, .5, 0);
537
+ kf.position(BoneName.FOOT_R, 0, .5, .4);
538
+ kf.rotate(BoneName.SHOULDER_L, -.9, .3, .4);
539
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -2);
540
+ kf.rotate(BoneName.SHOULDER_R, -.9, -.3, -.4);
541
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 2);
542
+ });
543
+ this.currentTime += timeOffset;
544
+ return this;
545
+ }
546
+ /**
547
+ * Back kick spin - 180° turn for 뒤차기
548
+ *
549
+ * Authentic Taekwondo back kick spin (뒤차기 회전):
550
+ * - Body rotates 180° (pelvis -1.5 rad initially)
551
+ * - Spine rotates with body (lower: -1.3 rad, upper: -1.0 rad)
552
+ * - Head looks over shoulder (0.5 rad) to maintain target visual
553
+ * - Hip chambers (0.3 rad flex)
554
+ * - Knee bends (-0.8 rad) preparing for backward thrust
555
+ * - Support leg maintains balance
556
+ *
557
+ * Looking over the shoulder is CRITICAL - you must see the target
558
+ * to execute an accurate back kick. This is emphasized in all
559
+ * traditional Korean martial arts.
560
+ *
561
+ * @korean 뒤차기회전
562
+ */
563
+ backKickSpin(timeOffset = .1, easing = "ease-out") {
564
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
565
+ kf.rotate(BoneName.PELVIS, 0, -1.5, 0);
566
+ kf.rotate(BoneName.SPINE_LOWER, 0, -1.3, 0);
567
+ kf.rotate(BoneName.SPINE_UPPER, 0, -1, .1);
568
+ kf.rotate(BoneName.HEAD, 0, .5, 0);
569
+ kf.rotate(BoneName.HIP_R, .3, 0, 0);
570
+ kf.rotate(BoneName.KNEE_R, -.8, 0, 0);
571
+ kf.rotate(BoneName.FOOT_R, 0, 0, 0);
572
+ kf.rotate(BoneName.HIP_L, 0, -.4, 0);
573
+ kf.rotate(BoneName.KNEE_L, -.35, 0, 0);
574
+ kf.rotate(BoneName.FOOT_L, 0, -1.57, 0);
575
+ kf.rotate(BoneName.SHOULDER_L, -.6, .5, .3);
576
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -2);
577
+ kf.rotate(BoneName.SHOULDER_R, -.6, -.5, -.3);
578
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 2);
579
+ });
580
+ this.currentTime += timeOffset;
581
+ return this;
582
+ }
583
+ /**
584
+ * Back kick thrust - Heel drives backward for 뒤차기
585
+ *
586
+ * Authentic Taekwondo back kick thrust (뒤차기 밀기):
587
+ * - Body completes 180° rotation (pelvis -3.14 rad = π)
588
+ * - Hip extends backward (0.5 rad flex maintained)
589
+ * - Knee extends fully (-0.2 rad) driving heel back
590
+ * - Foot dorsiflexes (-0.4 rad) presenting heel
591
+ * - Foot position extends backward (0 forward, 0 up, -0.8 back)
592
+ * - Head maintains target visual (1.0 rad look-back)
593
+ * - Spine fully rotated with body
594
+ * - Support leg powers the thrust
595
+ *
596
+ * The back kick delivers tremendous power because the entire
597
+ * body mass drives through the strongest leg muscles (glutes,
598
+ * hamstrings) in a straight line backward.
599
+ *
600
+ * @korean 뒤차기
601
+ */
602
+ backKickThrust(timeOffset = .1, easing = "ease-out") {
603
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
604
+ kf.rotate(BoneName.PELVIS, 0, -3.14, 0);
605
+ kf.rotate(BoneName.SPINE_LOWER, 0, -3, 0);
606
+ kf.rotate(BoneName.SPINE_UPPER, 0, -2.8, .2);
607
+ kf.rotate(BoneName.HEAD, 0, 1, 0);
608
+ kf.rotate(BoneName.HIP_R, .5, 0, 0);
609
+ kf.rotate(BoneName.KNEE_R, -.2, 0, 0);
610
+ kf.rotate(BoneName.FOOT_R, -.4, 0, 0);
611
+ kf.position(BoneName.FOOT_R, 0, 0, -.8);
612
+ kf.rotate(BoneName.HIP_L, 0, -.3, 0);
613
+ kf.rotate(BoneName.KNEE_L, -.5, 0, 0);
614
+ kf.rotate(BoneName.FOOT_L, 0, -.3, 0);
615
+ kf.rotate(BoneName.SHOULDER_L, -.6, .7, .3);
616
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.4);
617
+ kf.rotate(BoneName.SHOULDER_R, -.6, -.7, -.3);
618
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.4);
619
+ });
620
+ this.currentTime += timeOffset;
621
+ return this;
622
+ }
623
+ /**
624
+ * Low kick chamber - Small knee lift for low kick (하단차기준비)
625
+ * @korean 하단차기준비
626
+ */
627
+ lowKickChamber(timeOffset = .08, easing = "ease-out") {
628
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
629
+ kf.rotate(BoneName.HIP_R, .5, 0, .3);
630
+ kf.rotate(BoneName.KNEE_R, -.8, 0, 0);
631
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
632
+ kf.rotate(BoneName.PELVIS, 0, -.2, 0);
633
+ });
634
+ this.currentTime += timeOffset;
635
+ return this;
636
+ }
637
+ /**
638
+ * Low kick sweep - Shin sweeps at thigh height (하단차기)
639
+ * @korean 하단차기
640
+ */
641
+ lowKickSweep(timeOffset = .1, easing = "ease-out") {
642
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
643
+ kf.rotate(BoneName.HIP_R, .3, 0, 1.5);
644
+ kf.rotate(BoneName.KNEE_R, -.15, 0, 0);
645
+ kf.rotate(BoneName.FOOT_R, .3, 0, .3);
646
+ kf.rotate(BoneName.PELVIS, 0, -1.2, 0);
647
+ kf.rotate(BoneName.SPINE_UPPER, 0, .6, 0);
648
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
649
+ });
650
+ this.currentTime += timeOffset;
651
+ return this;
652
+ }
653
+ /**
654
+ * Crescent kick chamber - Leg swings inward (반달차기준비)
655
+ * @korean 반달차기준비
656
+ */
657
+ crescentKickChamber(timeOffset = .1, easing = "ease-out") {
658
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
659
+ kf.rotate(BoneName.HIP_R, .8, 0, -.8);
660
+ kf.rotate(BoneName.KNEE_R, -.3, 0, 0);
661
+ kf.rotate(BoneName.PELVIS, 0, .3, 0);
662
+ kf.rotate(BoneName.SPINE_UPPER, 0, -.2, 0);
663
+ });
664
+ this.currentTime += timeOffset;
665
+ return this;
666
+ }
667
+ /**
668
+ * Crescent kick arc - Leg sweeps across body (반달차기)
669
+ * @korean 반달차기
670
+ */
671
+ crescentKickArc(timeOffset = .12, easing = "ease-out") {
672
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
673
+ kf.rotate(BoneName.HIP_R, 1.2, 0, 1);
674
+ kf.rotate(BoneName.KNEE_R, -.1, 0, 0);
675
+ kf.rotate(BoneName.FOOT_R, .2, 0, 0);
676
+ kf.rotate(BoneName.PELVIS, 0, -.5, 0);
677
+ kf.rotate(BoneName.SPINE_UPPER, 0, .4, 0);
678
+ kf.position(BoneName.FOOT_R, .5, .8, 0);
679
+ });
680
+ this.currentTime += timeOffset;
681
+ return this;
682
+ }
683
+ /**
684
+ * Push kick chamber - Ball of foot position (밀어차기준비)
685
+ *
686
+ * Enhanced with hip rotation and guard hand protection
687
+ * @korean 밀어차기준비
688
+ */
689
+ pushKickChamber(timeOffset = .1, easing = "ease-out") {
690
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
691
+ kf.rotate(BoneName.HIP_R, 1.2, 0, 0);
692
+ kf.rotate(BoneName.KNEE_R, -1.8, 0, 0);
693
+ kf.rotate(BoneName.FOOT_R, .3, 0, 0);
694
+ kf.rotate(BoneName.HIP_L, 0, -.2, 0);
695
+ kf.rotate(BoneName.KNEE_L, -.3, 0, 0);
696
+ kf.rotate(BoneName.FOOT_L, 0, .4, 0);
697
+ kf.rotate(BoneName.PELVIS, -.1, -.3, 0);
698
+ kf.rotate(BoneName.SHOULDER_L, -.9, .3, .4);
699
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -2);
700
+ kf.rotate(BoneName.SHOULDER_R, -.9, -.3, -.4);
701
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 2);
702
+ });
703
+ this.currentTime += timeOffset;
704
+ return this;
705
+ }
706
+ /**
707
+ * Push kick thrust - Foot pushes opponent back (밀어차기)
708
+ *
709
+ * Enhanced with hip rotation for power and guard hand protection
710
+ * @korean 밀어차기
711
+ */
712
+ pushKickThrust(timeOffset = .1, easing = "ease-out") {
713
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
714
+ kf.rotate(BoneName.HIP_R, 1, 0, 0);
715
+ kf.rotate(BoneName.KNEE_R, -.15, 0, 0);
716
+ kf.rotate(BoneName.FOOT_R, .5, 0, 0);
717
+ kf.rotate(BoneName.HIP_L, 0, -.3, 0);
718
+ kf.rotate(BoneName.KNEE_L, -.35, 0, 0);
719
+ kf.rotate(BoneName.FOOT_L, 0, .8, 0);
720
+ kf.rotate(BoneName.PELVIS, .1, -.6, 0);
721
+ kf.rotate(BoneName.SPINE_LOWER, .05, -.3, 0);
722
+ kf.position(BoneName.FOOT_R, 0, 0, .5);
723
+ kf.rotate(BoneName.SHOULDER_L, -.9, .3, .4);
724
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -2);
725
+ kf.rotate(BoneName.SHOULDER_R, -.9, -.3, -.4);
726
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 2);
727
+ });
728
+ this.currentTime += timeOffset;
729
+ return this;
730
+ }
731
+ /**
732
+ * Spinning heel kick - 360° with heel strike (뒤돌려차기)
733
+ *
734
+ * Full 360° spin requires complete support foot pivot
735
+ * @korean 뒤돌려차기
736
+ */
737
+ spinningHeelKick(timeOffset = .15, easing = "ease-out") {
738
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
739
+ kf.rotate(BoneName.PELVIS, 0, -4.5, 0);
740
+ kf.rotate(BoneName.SPINE_LOWER, 0, -4.3, 0);
741
+ kf.rotate(BoneName.SPINE_UPPER, 0, -4, .15);
742
+ kf.rotate(BoneName.HIP_R, .8, 0, 1.2);
743
+ kf.rotate(BoneName.KNEE_R, -.2, 0, 0);
744
+ kf.rotate(BoneName.FOOT_R, .3, 0, .2);
745
+ kf.position(BoneName.FOOT_R, .6, .5, 0);
746
+ kf.rotate(BoneName.HIP_L, 0, -.5, 0);
747
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
748
+ kf.rotate(BoneName.FOOT_L, 0, -2.1, 0);
749
+ kf.rotate(BoneName.SHOULDER_L, -.7, .4, .4);
750
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -2);
751
+ kf.rotate(BoneName.SHOULDER_R, -.7, -.4, -.4);
752
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 2);
753
+ });
754
+ this.currentTime += timeOffset;
755
+ return this;
756
+ }
757
+ /**
758
+ * Hook kick extension - Leg extends past target (후려차기 연장)
759
+ *
760
+ * Authentic Korean hook kick (후려차기) first phase:
761
+ * - Body rotates past perpendicular (~100°)
762
+ * - Leg extends past target like a missed side kick
763
+ * - Foot positioned to hook back toward target
764
+ * - Head maintains target visual
765
+ *
766
+ * The hook kick is distinct from crescent kick:
767
+ * - Crescent: sweeps ACROSS body
768
+ * - Hook: extends PAST, then hooks BACK
769
+ *
770
+ * @korean 후려차기연장
771
+ */
772
+ hookKickExtend(timeOffset = .15, easing = "ease-out") {
773
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
774
+ kf.rotate(BoneName.PELVIS, 0, -1.8, 0);
775
+ kf.rotate(BoneName.SPINE_LOWER, 0, -1.6, 0);
776
+ kf.rotate(BoneName.SPINE_UPPER, 0, -1.4, .1);
777
+ kf.rotate(BoneName.HEAD, 0, .6, 0);
778
+ kf.rotate(BoneName.HIP_R, 1.3, 0, .5);
779
+ kf.rotate(BoneName.KNEE_R, -.1, 0, 0);
780
+ kf.rotate(BoneName.FOOT_R, .2, 0, .4);
781
+ kf.position(BoneName.FOOT_R, .3, .8, -.5);
782
+ kf.rotate(BoneName.HIP_L, 0, -.2, 0);
783
+ kf.rotate(BoneName.KNEE_L, -.35, 0, 0);
784
+ kf.rotate(BoneName.SHOULDER_L, -.5, .5, .3);
785
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.5);
786
+ kf.rotate(BoneName.SHOULDER_R, -.5, -.4, -.3);
787
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.5);
788
+ });
789
+ this.currentTime += timeOffset;
790
+ return this;
791
+ }
792
+ /**
793
+ * Hook kick hook-back - Heel hooks back toward target (후려차기 후림)
794
+ *
795
+ * Authentic Korean hook kick (후려차기) second phase:
796
+ * - Leg retracts/hooks back toward target
797
+ * - Heel is the striking surface (발뒤꿈치)
798
+ * - Body rotates back toward target during hook
799
+ * - Snapping motion at knee for power
800
+ *
801
+ * The hook motion is what makes this kick unique:
802
+ * - Extends past, then HOOKS back
803
+ * - Catches opponent from unexpected angle
804
+ * - Heel strikes back of head or temple
805
+ *
806
+ * @korean 후려차기후림
807
+ */
808
+ hookKickHook(timeOffset = .12, easing = "ease-in") {
809
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
810
+ kf.rotate(BoneName.PELVIS, 0, -1.3, 0);
811
+ kf.rotate(BoneName.SPINE_LOWER, 0, -1.2, 0);
812
+ kf.rotate(BoneName.SPINE_UPPER, 0, -1, .1);
813
+ kf.rotate(BoneName.HEAD, 0, .4, 0);
814
+ kf.rotate(BoneName.HIP_R, 1, 0, -.3);
815
+ kf.rotate(BoneName.KNEE_R, -.6, 0, 0);
816
+ kf.rotate(BoneName.FOOT_R, .3, 0, -.4);
817
+ kf.position(BoneName.FOOT_R, 0, .8, .2);
818
+ kf.rotate(BoneName.HIP_L, 0, -.1, 0);
819
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
820
+ kf.rotate(BoneName.SHOULDER_L, -.6, .4, .2);
821
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.4);
822
+ kf.rotate(BoneName.SHOULDER_R, -.5, -.3, -.2);
823
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.4);
824
+ });
825
+ this.currentTime += timeOffset;
826
+ return this;
827
+ }
828
+ /**
829
+ * Tornado kick jump with 360° rotation (회전차기 도약)
830
+ *
831
+ * Authentic Korean tornado kick (회전차기) jump phase:
832
+ * - Jump with full 360° body rotation
833
+ * - Arms swing to generate rotational momentum
834
+ * - Body elevates during spin
835
+ * - Prepares for roundhouse at apex
836
+ *
837
+ * @korean 회전차기도약
838
+ */
839
+ tornadoJump(timeOffset = .3) {
840
+ this.addKeyframe(this.currentTime + timeOffset * .4, "ease-out", (kf) => {
841
+ kf.rotate(BoneName.PELVIS, 0, -3.14, 0);
842
+ kf.rotate(BoneName.SPINE_LOWER, 0, -3, 0);
843
+ kf.rotate(BoneName.SPINE_UPPER, 0, -2.8, 0);
844
+ kf.position(BoneName.PELVIS, 0, .3, 0);
845
+ kf.rotate(BoneName.HIP_R, .6, 0, 0);
846
+ kf.rotate(BoneName.KNEE_R, -1.2, 0, 0);
847
+ kf.rotate(BoneName.HIP_L, .4, 0, 0);
848
+ kf.rotate(BoneName.KNEE_L, -1, 0, 0);
849
+ kf.rotate(BoneName.SHOULDER_L, -.8, .6, .4);
850
+ kf.rotate(BoneName.SHOULDER_R, -.8, -.6, -.4);
851
+ });
852
+ this.addKeyframe(this.currentTime + timeOffset, "ease-in", (kf) => {
853
+ kf.rotate(BoneName.PELVIS, 0, -6.28, 0);
854
+ kf.rotate(BoneName.SPINE_LOWER, 0, -6, 0);
855
+ kf.rotate(BoneName.SPINE_UPPER, 0, -5.8, 0);
856
+ kf.position(BoneName.PELVIS, 0, .5, 0);
857
+ kf.rotate(BoneName.HIP_R, 1, 0, .4);
858
+ kf.rotate(BoneName.KNEE_R, -1.5, 0, 0);
859
+ kf.rotate(BoneName.HIP_L, .3, 0, 0);
860
+ kf.rotate(BoneName.KNEE_L, -.3, 0, 0);
861
+ kf.rotate(BoneName.SHOULDER_L, -.6, .3, .3);
862
+ kf.rotate(BoneName.SHOULDER_R, -.6, -.3, -.3);
863
+ });
864
+ this.currentTime += timeOffset;
865
+ return this;
866
+ }
867
+ /**
868
+ * Punch chamber - Fist at hip with vertical palm (주먹준비자세)
869
+ * Korean martial arts chamber position with fist vertical (세로주먹)
870
+ * @param timeOffset Time offset in seconds
871
+ * @param hand Which hand to chamber ("left" | "right")
872
+ * @param easing Easing function
873
+ * @korean 주먹준비자세
874
+ */
875
+ punchChamber(timeOffset = .1, hand = "right", easing = "ease-out") {
876
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
877
+ applyPunchPhaseToConfig(kf, PUNCH_PHASES.CHAMBER, hand, {
878
+ includeWrist: true,
879
+ includeOppositeArm: true,
880
+ includeSpineMiddle: false
881
+ });
882
+ this.applyHandPose(kf, HAND_POSES.FIST, hand);
883
+ });
884
+ this.currentTime += timeOffset;
885
+ return this;
886
+ }
887
+ /**
888
+ * Punch wind-up - Arm coils back (주먹준비)
889
+ * @param timeOffset Time offset in seconds
890
+ * @param hand Which hand to wind up ("left" | "right")
891
+ * @param easing Easing function
892
+ * @korean 주먹준비
893
+ */
894
+ punchWindup(timeOffset = .08, hand = "right", easing = "linear") {
895
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
896
+ applyPunchPhaseToConfig(kf, PUNCH_PHASES.WINDUP, hand, { includeOppositeArm: true });
897
+ this.applyHandPose(kf, HAND_POSES.FIST, hand);
898
+ });
899
+ this.currentTime += timeOffset;
900
+ return this;
901
+ }
902
+ /**
903
+ * Punch extension - Arm extends with torso rotation (지르기)
904
+ * Includes fist rotation from vertical to pronated and hikite
905
+ *
906
+ * Enhanced with realistic torso rotation (허리비틀기):
907
+ * - Straight punches: 20° counter-rotation for power
908
+ * - Torso rotates OPPOSITE to punch direction
909
+ * - Sequential spine rotation (lower → mid → upper)
910
+ *
911
+ * @param timeOffset Time offset in seconds
912
+ * @param hand Which hand to extend ("left" | "right")
913
+ * @param easing Easing function
914
+ * @korean 지르기
915
+ */
916
+ punchExtend(timeOffset = .07, hand = "right", easing = "ease-out") {
917
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
918
+ applyPunchPhaseToConfig(kf, PUNCH_PHASES.EXTENSION, hand, {
919
+ includeWrist: true,
920
+ includeSpineMiddle: true,
921
+ includeOppositeArm: true
922
+ });
923
+ this.applyPunchTorsoRotation(kf, hand, 20);
924
+ this.applyHandPose(kf, HAND_POSES.FIST, hand);
925
+ });
926
+ this.currentTime += timeOffset;
927
+ return this;
928
+ }
929
+ /**
930
+ * Punch peak - Maximum extension with full rotation (정점)
931
+ * Hold at full extension for impact frame
932
+ *
933
+ * Enhanced with sustained torso rotation at impact:
934
+ * - Maintains 20° counter-rotation at peak
935
+ * - Maximizes power transfer through spine
936
+ *
937
+ * @param timeOffset Time offset in seconds
938
+ * @param hand Which hand is extended ("left" | "right")
939
+ * @param easing Easing function
940
+ * @korean 정점
941
+ */
942
+ punchPeak(timeOffset = .05, hand = "right", easing = "linear") {
943
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
944
+ applyPunchPhaseToConfig(kf, PUNCH_PHASES.PEAK, hand, {
945
+ includeWrist: true,
946
+ includeSpineMiddle: true,
947
+ includeOppositeArm: true
948
+ });
949
+ this.applyPunchTorsoRotation(kf, hand, 20);
950
+ this.applyHandPose(kf, HAND_POSES.FIST, hand);
951
+ });
952
+ this.currentTime += timeOffset;
953
+ return this;
954
+ }
955
+ /**
956
+ * Cross punch - Left arm punch with full body rotation (크로스)
957
+ * @korean 크로스
958
+ */
959
+ crossPunch(timeOffset = .15, easing = "ease-out") {
960
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
961
+ kf.rotate(BoneName.SHOULDER_L, -.7, -.3, .3);
962
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -.05);
963
+ kf.rotate(BoneName.WRIST_L, 0, 0, .2);
964
+ kf.rotate(BoneName.SPINE_UPPER, 0, -.45, 0);
965
+ kf.rotate(BoneName.SPINE_MIDDLE, 0, -.35, 0);
966
+ kf.rotate(BoneName.SPINE_LOWER, 0, -.25, 0);
967
+ kf.rotate(BoneName.PELVIS, 0, -.3, 0);
968
+ this.applyHandPose(kf, HAND_POSES.FIST, "left");
969
+ });
970
+ this.currentTime += timeOffset;
971
+ return this;
972
+ }
973
+ /**
974
+ * Palm strike extension - Open palm heel strike (장권)
975
+ * @korean 장권
976
+ */
977
+ palmStrike(timeOffset = .1, easing = "ease-out") {
978
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
979
+ kf.rotate(BoneName.SHOULDER_R, -.7, .3, -.1);
980
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .05);
981
+ kf.rotate(BoneName.WRIST_R, -.5, 0, .1);
982
+ kf.rotate(BoneName.SPINE_UPPER, 0, .4, 0);
983
+ kf.rotate(BoneName.PELVIS, 0, .25, 0);
984
+ this.applyHandPose(kf, HAND_POSES.OPEN_PALM, "right");
985
+ });
986
+ this.currentTime += timeOffset;
987
+ return this;
988
+ }
989
+ /**
990
+ * Hook punch - Circular punch targeting temple (후크)
991
+ * Enhanced with Korean martial arts shoulder rotation and hikite (당기기)
992
+ *
993
+ * Enhanced with realistic circular torso rotation (몸통회전):
994
+ * - Hook punches: 50° rotation for circular power
995
+ * - Torso rotates INTO the punch for arc generation
996
+ * - Sequential spine rotation creates whipping motion
997
+ *
998
+ * @param timeOffset Time offset in seconds
999
+ * @param hand Which hand is hooking ("left" | "right")
1000
+ * @param easing Easing function
1001
+ * @korean 후크
1002
+ */
1003
+ hookPunch(timeOffset = .1, hand = "right", easing = "ease-out") {
1004
+ const isRight = hand === "right";
1005
+ const shoulderBone = isRight ? BoneName.SHOULDER_R : BoneName.SHOULDER_L;
1006
+ const elbowBone = isRight ? BoneName.ELBOW_R : BoneName.ELBOW_L;
1007
+ const wristBone = isRight ? BoneName.WRIST_R : BoneName.WRIST_L;
1008
+ const oppositeShoulder = isRight ? BoneName.SHOULDER_L : BoneName.SHOULDER_R;
1009
+ const oppositeElbow = isRight ? BoneName.ELBOW_L : BoneName.ELBOW_R;
1010
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1011
+ kf.rotate(shoulderBone, -.1, isRight ? .6 : -.6, isRight ? .4 : -.4);
1012
+ kf.rotate(elbowBone, 0, 0, isRight ? 1.35 : -1.35);
1013
+ kf.rotate(wristBone, 0, isRight ? .2 : -.2, 0);
1014
+ kf.rotate(oppositeShoulder, -.2, 0, isRight ? -.3 : .3);
1015
+ kf.rotate(oppositeElbow, 0, 0, isRight ? -1.1 : 1.1);
1016
+ this.applyHookTorsoRotation(kf, hand, 50);
1017
+ kf.rotate(BoneName.PELVIS, 0, isRight ? .35 : -.35, 0);
1018
+ const rearFoot = isRight ? BoneName.FOOT_R : BoneName.FOOT_L;
1019
+ const rearHip = isRight ? BoneName.HIP_R : BoneName.HIP_L;
1020
+ kf.rotate(rearFoot, 0, isRight ? .4 : -.4, 0);
1021
+ kf.rotate(rearHip, 0, isRight ? .25 : -.25, 0);
1022
+ this.applyHandPose(kf, HAND_POSES.FIST, hand);
1023
+ });
1024
+ this.currentTime += timeOffset;
1025
+ return this;
1026
+ }
1027
+ /**
1028
+ * Hook wind-up - Arm pulls to side (후크준비)
1029
+ * Enhanced with hikite (당기기) preparation
1030
+ * @param timeOffset Time offset in seconds
1031
+ * @param hand Which hand is hooking ("left" | "right")
1032
+ * @param easing Easing function
1033
+ * @korean 후크준비
1034
+ */
1035
+ hookWindup(timeOffset = .08, hand = "right", easing = "linear") {
1036
+ const isRight = hand === "right";
1037
+ const shoulderBone = isRight ? BoneName.SHOULDER_R : BoneName.SHOULDER_L;
1038
+ const elbowBone = isRight ? BoneName.ELBOW_R : BoneName.ELBOW_L;
1039
+ const oppositeShoulder = isRight ? BoneName.SHOULDER_L : BoneName.SHOULDER_R;
1040
+ const oppositeElbow = isRight ? BoneName.ELBOW_L : BoneName.ELBOW_R;
1041
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1042
+ kf.rotate(shoulderBone, .1, isRight ? -.6 : .6, isRight ? -.5 : .5);
1043
+ kf.rotate(elbowBone, 0, 0, isRight ? 1.57 : -1.57);
1044
+ kf.rotate(oppositeShoulder, -.1, 0, isRight ? .2 : -.2);
1045
+ kf.rotate(oppositeElbow, 0, 0, isRight ? 1.4 : -1.4);
1046
+ kf.rotate(BoneName.SPINE_UPPER, 0, isRight ? -.3 : .3, 0);
1047
+ kf.rotate(BoneName.PELVIS, 0, isRight ? -.2 : .2, 0);
1048
+ this.applyHandPose(kf, HAND_POSES.FIST, hand);
1049
+ });
1050
+ this.currentTime += timeOffset;
1051
+ return this;
1052
+ }
1053
+ /**
1054
+ * Uppercut punch - Rising punch to chin (어퍼컷)
1055
+ * Enhanced with Korean martial arts leg drive and hikite (당기기)
1056
+ * @param timeOffset Time offset in seconds
1057
+ * @param hand Which hand is uppercutting ("left" | "right")
1058
+ * @param easing Easing function
1059
+ * @korean 어퍼컷
1060
+ */
1061
+ uppercutPunch(timeOffset = .1, hand = "right", easing = "ease-out") {
1062
+ const isRight = hand === "right";
1063
+ const shoulderBone = isRight ? BoneName.SHOULDER_R : BoneName.SHOULDER_L;
1064
+ const elbowBone = isRight ? BoneName.ELBOW_R : BoneName.ELBOW_L;
1065
+ const oppositeShoulder = isRight ? BoneName.SHOULDER_L : BoneName.SHOULDER_R;
1066
+ const oppositeElbow = isRight ? BoneName.ELBOW_L : BoneName.ELBOW_R;
1067
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1068
+ kf.rotate(shoulderBone, -.6, isRight ? .3 : -.3, isRight ? .8 : -.8);
1069
+ kf.rotate(elbowBone, 0, 0, isRight ? 1.2 : -1.2);
1070
+ kf.rotate(oppositeShoulder, -.2, 0, isRight ? -.3 : .3);
1071
+ kf.rotate(oppositeElbow, 0, 0, isRight ? -1.1 : 1.1);
1072
+ kf.rotate(BoneName.KNEE_L, .05, 0, 0);
1073
+ kf.rotate(BoneName.KNEE_R, .05, 0, 0);
1074
+ kf.rotate(BoneName.HIP_L, -.1, 0, 0);
1075
+ kf.rotate(BoneName.HIP_R, -.1, 0, 0);
1076
+ kf.rotate(BoneName.PELVIS, -.25, isRight ? .2 : -.2, 0);
1077
+ kf.position(BoneName.PELVIS, 0, .15, .1);
1078
+ this.applyHandPose(kf, HAND_POSES.FIST, hand);
1079
+ });
1080
+ this.currentTime += timeOffset;
1081
+ return this;
1082
+ }
1083
+ /**
1084
+ * Uppercut crouch - Dip before rising punch (어퍼컷준비)
1085
+ * Enhanced with hikite (당기기) preparation
1086
+ * @param timeOffset Time offset in seconds
1087
+ * @param hand Which hand is uppercutting ("left" | "right")
1088
+ * @param easing Easing function
1089
+ * @korean 어퍼컷준비
1090
+ */
1091
+ uppercutCrouch(timeOffset = .08, hand = "right", easing = "linear") {
1092
+ const isRight = hand === "right";
1093
+ const shoulderBone = isRight ? BoneName.SHOULDER_R : BoneName.SHOULDER_L;
1094
+ const elbowBone = isRight ? BoneName.ELBOW_R : BoneName.ELBOW_L;
1095
+ const oppositeShoulder = isRight ? BoneName.SHOULDER_L : BoneName.SHOULDER_R;
1096
+ const oppositeElbow = isRight ? BoneName.ELBOW_L : BoneName.ELBOW_R;
1097
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1098
+ kf.rotate(shoulderBone, .3, 0, isRight ? .2 : -.2);
1099
+ kf.rotate(elbowBone, 0, 0, isRight ? 1.5 : -1.5);
1100
+ kf.rotate(oppositeShoulder, -.1, 0, isRight ? .2 : -.2);
1101
+ kf.rotate(oppositeElbow, 0, 0, isRight ? 1.4 : -1.4);
1102
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
1103
+ kf.rotate(BoneName.KNEE_R, -.4, 0, 0);
1104
+ kf.rotate(BoneName.PELVIS, .15, isRight ? -.1 : .1, 0);
1105
+ kf.position(BoneName.PELVIS, 0, -.1, 0);
1106
+ this.applyHandPose(kf, HAND_POSES.FIST, hand);
1107
+ });
1108
+ this.currentTime += timeOffset;
1109
+ return this;
1110
+ }
1111
+ /**
1112
+ * Overhand punch - Looping downward punch (오버핸드)
1113
+ * @korean 오버핸드
1114
+ */
1115
+ overhandPunch(timeOffset = .12, easing = "ease-out") {
1116
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1117
+ kf.rotate(BoneName.SHOULDER_R, -.3, .4, .8);
1118
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .8);
1119
+ kf.rotate(BoneName.SPINE_UPPER, .2, .4, 0);
1120
+ kf.rotate(BoneName.SPINE_MIDDLE, .15, .3, 0);
1121
+ kf.rotate(BoneName.PELVIS, .1, .25, 0);
1122
+ kf.position(BoneName.PELVIS, 0, -.05, .1);
1123
+ this.applyHandPose(kf, HAND_POSES.HAMMER_FIST, "right");
1124
+ });
1125
+ this.currentTime += timeOffset;
1126
+ return this;
1127
+ }
1128
+ /**
1129
+ * Elbow strike chamber - Arm crosses body (팔꿈치준비)
1130
+ * @korean 팔꿈치준비
1131
+ */
1132
+ elbowChamber(timeOffset = .05, easing = "linear") {
1133
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1134
+ kf.rotate(BoneName.SHOULDER_R, 0, .8, -.3);
1135
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.57);
1136
+ kf.rotate(BoneName.FOREARM_R, 0, -.5, 0);
1137
+ kf.rotate(BoneName.SPINE_UPPER, 0, -.3, 0);
1138
+ kf.position(BoneName.HAND_R, -.2, 0, .3);
1139
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1140
+ });
1141
+ this.currentTime += timeOffset;
1142
+ return this;
1143
+ }
1144
+ /**
1145
+ * Elbow strike - Elbow drives through target (팔꿈치치기)
1146
+ * @korean 팔꿈치치기
1147
+ */
1148
+ elbowStrike(timeOffset = .07, easing = "linear") {
1149
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1150
+ kf.rotate(BoneName.SHOULDER_R, -.3, .4, -.3);
1151
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.3);
1152
+ kf.rotate(BoneName.SPINE_UPPER, 0, .6, .15);
1153
+ kf.rotate(BoneName.SPINE_MIDDLE, 0, .5, .1);
1154
+ kf.rotate(BoneName.PELVIS, 0, .4, 0);
1155
+ kf.position(BoneName.ELBOW_R, 0, 0, .7);
1156
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1157
+ });
1158
+ this.currentTime += timeOffset;
1159
+ return this;
1160
+ }
1161
+ /**
1162
+ * Elbow uppercut - Upward elbow strike (팔꿈치올려치기)
1163
+ * @korean 팔꿈치올려치기
1164
+ */
1165
+ elbowUppercut(timeOffset = .1, easing = "ease-out") {
1166
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1167
+ kf.rotate(BoneName.SHOULDER_R, -.6, .3, .8);
1168
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.4);
1169
+ kf.rotate(BoneName.KNEE_L, -.05, 0, 0);
1170
+ kf.rotate(BoneName.KNEE_R, -.05, 0, 0);
1171
+ kf.rotate(BoneName.PELVIS, -.15, 0, 0);
1172
+ kf.position(BoneName.PELVIS, 0, .08, .15);
1173
+ kf.position(BoneName.ELBOW_R, 0, .7, .5);
1174
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1175
+ });
1176
+ this.currentTime += timeOffset;
1177
+ return this;
1178
+ }
1179
+ /**
1180
+ * Knee strike from clinch (무릎차기)
1181
+ *
1182
+ * Enhanced with hip rotation and proper clinch mechanics
1183
+ * @korean 무릎차기
1184
+ */
1185
+ kneeStrike(timeOffset = .1, easing = "ease-out") {
1186
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1187
+ kf.rotate(BoneName.SHOULDER_L, -.1, -.3, .6);
1188
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.8);
1189
+ kf.rotate(BoneName.SHOULDER_R, -.1, .3, -.6);
1190
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.8);
1191
+ kf.rotate(BoneName.HIP_R, 1.4, 0, 0);
1192
+ kf.rotate(BoneName.KNEE_R, -.5, 0, 0);
1193
+ kf.rotate(BoneName.FOOT_R, .4, 0, 0);
1194
+ kf.rotate(BoneName.PELVIS, .2, -.6, 0);
1195
+ kf.rotate(BoneName.SPINE_LOWER, .1, -.3, 0);
1196
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
1197
+ kf.rotate(BoneName.HIP_L, 0, -.2, 0);
1198
+ kf.rotate(BoneName.FOOT_L, 0, .5, 0);
1199
+ kf.position(BoneName.KNEE_R, 0, .4, .5);
1200
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1201
+ });
1202
+ this.currentTime += timeOffset;
1203
+ return this;
1204
+ }
1205
+ /**
1206
+ * Brachial elbow - Horizontal elbow to brachial nerve (상박치기)
1207
+ * Targets the lateral neck/brachial plexus area
1208
+ * @korean 상박치기
1209
+ */
1210
+ brachialElbow(timeOffset = .08, easing = "ease-out") {
1211
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1212
+ kf.rotate(BoneName.SHOULDER_R, -.3, .2, .8);
1213
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.6);
1214
+ kf.rotate(BoneName.SPINE_UPPER, 0, .8, .1);
1215
+ kf.rotate(BoneName.SPINE_MIDDLE, 0, .6, .05);
1216
+ kf.rotate(BoneName.PELVIS, 0, .5, 0);
1217
+ kf.position(BoneName.ELBOW_R, .3, .2, .6);
1218
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1219
+ });
1220
+ this.currentTime += timeOffset;
1221
+ return this;
1222
+ }
1223
+ /**
1224
+ * Slashing elbow - Diagonal cutting elbow (베기팔꿈치)
1225
+ * Diagonal slash across opponent's face/temple
1226
+ * @korean 베기팔꿈치
1227
+ */
1228
+ slashingElbow(timeOffset = .09, easing = "linear") {
1229
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1230
+ kf.rotate(BoneName.SHOULDER_R, -.6, .3, 1);
1231
+ kf.rotate(BoneName.ELBOW_R, 0, .2, 1.2);
1232
+ kf.rotate(BoneName.SPINE_UPPER, .2, .5, .15);
1233
+ kf.rotate(BoneName.SPINE_MIDDLE, .1, .4, .1);
1234
+ kf.rotate(BoneName.PELVIS, .05, .3, .05);
1235
+ kf.position(BoneName.ELBOW_R, .2, .1, .6);
1236
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1237
+ });
1238
+ this.currentTime += timeOffset;
1239
+ return this;
1240
+ }
1241
+ /**
1242
+ * Spinal elbow - Downward elbow to spine (척추팔꿈치)
1243
+ * Strikes spine from behind or above
1244
+ * @korean 척추팔꿈치
1245
+ */
1246
+ spinalElbow(timeOffset = .1, easing = "ease-in") {
1247
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1248
+ kf.rotate(BoneName.SHOULDER_R, -.8, .4, .6);
1249
+ kf.rotate(BoneName.ELBOW_R, 0, .3, 1);
1250
+ kf.rotate(BoneName.SPINE_UPPER, .4, .3, 0);
1251
+ kf.rotate(BoneName.SPINE_MIDDLE, .3, .2, 0);
1252
+ kf.rotate(BoneName.PELVIS, .2, .2, 0);
1253
+ kf.position(BoneName.ELBOW_R, .15, -.1, .7);
1254
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1255
+ });
1256
+ this.currentTime += timeOffset;
1257
+ return this;
1258
+ }
1259
+ /**
1260
+ * Side knee - Lateral knee to ribs (옆무릎)
1261
+ * Clinch knee targeting opponent's side
1262
+ * @korean 옆무릎
1263
+ */
1264
+ sideKneeStrike(timeOffset = .12, easing = "ease-out") {
1265
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1266
+ kf.rotate(BoneName.SHOULDER_L, .3, .4, -.6);
1267
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.6);
1268
+ kf.rotate(BoneName.SHOULDER_R, .3, -.4, .6);
1269
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.6);
1270
+ kf.rotate(BoneName.HIP_R, 1.2, 0, .4);
1271
+ kf.rotate(BoneName.KNEE_R, -.4, 0, 0);
1272
+ kf.rotate(BoneName.FOOT_R, .3, 0, 0);
1273
+ kf.rotate(BoneName.PELVIS, .1, -.4, .1);
1274
+ kf.rotate(BoneName.SPINE_LOWER, .05, -.3, .05);
1275
+ kf.rotate(BoneName.KNEE_L, -.25, 0, 0);
1276
+ kf.rotate(BoneName.FOOT_L, 0, .4, 0);
1277
+ kf.position(BoneName.KNEE_R, .3, .3, .4);
1278
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1279
+ });
1280
+ this.currentTime += timeOffset;
1281
+ return this;
1282
+ }
1283
+ /**
1284
+ * Flying knee - Jumping knee strike (뛰어무릎)
1285
+ * Explosive airborne knee
1286
+ * @korean 뛰어무릎
1287
+ */
1288
+ flyingKnee(timeOffset = .15, easing = "ease-out") {
1289
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1290
+ kf.rotate(BoneName.SHOULDER_L, -.5, .3, -.4);
1291
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.4);
1292
+ kf.rotate(BoneName.SHOULDER_R, -.5, -.3, .4);
1293
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.4);
1294
+ kf.rotate(BoneName.HIP_R, 1.6, 0, 0);
1295
+ kf.rotate(BoneName.KNEE_R, -.3, 0, 0);
1296
+ kf.rotate(BoneName.FOOT_R, .5, 0, 0);
1297
+ kf.rotate(BoneName.HIP_L, -.3, 0, 0);
1298
+ kf.rotate(BoneName.KNEE_L, -.1, 0, 0);
1299
+ kf.rotate(BoneName.PELVIS, .3, -.5, 0);
1300
+ kf.rotate(BoneName.SPINE_LOWER, .2, -.3, 0);
1301
+ kf.position(BoneName.PELVIS, 0, .4, .3);
1302
+ kf.position(BoneName.KNEE_R, 0, .6, .6);
1303
+ this.applyHandPose(kf, HAND_POSES.FIST, "both");
1304
+ });
1305
+ this.currentTime += timeOffset;
1306
+ return this;
1307
+ }
1308
+ /**
1309
+ * Kidney knee - Knee to kidney from side (신장무릎)
1310
+ * Targets kidney area from side clinch
1311
+ * @korean 신장무릎
1312
+ */
1313
+ kidneyKnee(timeOffset = .11, easing = "ease-out") {
1314
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1315
+ kf.rotate(BoneName.SHOULDER_L, .4, .5, -.5);
1316
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.5);
1317
+ kf.rotate(BoneName.SHOULDER_R, .4, -.5, .5);
1318
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.5);
1319
+ kf.rotate(BoneName.HIP_R, 1.3, .2, .3);
1320
+ kf.rotate(BoneName.KNEE_R, -.45, 0, 0);
1321
+ kf.rotate(BoneName.FOOT_R, .35, .1, 0);
1322
+ kf.rotate(BoneName.PELVIS, .15, -.5, .1);
1323
+ kf.rotate(BoneName.SPINE_LOWER, .1, -.35, .05);
1324
+ kf.rotate(BoneName.KNEE_L, -.22, 0, 0);
1325
+ kf.rotate(BoneName.FOOT_L, 0, .45, 0);
1326
+ kf.position(BoneName.KNEE_R, .25, .35, .45);
1327
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1328
+ });
1329
+ this.currentTime += timeOffset;
1330
+ return this;
1331
+ }
1332
+ /**
1333
+ * Femoral knee - Knee to femoral nerve (대퇴부무릎)
1334
+ * Low knee targeting thigh/femoral nerve
1335
+ * @korean 대퇴부무릎
1336
+ */
1337
+ femoralKnee(timeOffset = .1, easing = "ease-out") {
1338
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1339
+ kf.rotate(BoneName.SHOULDER_L, .5, .3, -.4);
1340
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.3);
1341
+ kf.rotate(BoneName.SHOULDER_R, .5, -.3, .4);
1342
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.3);
1343
+ kf.rotate(BoneName.HIP_R, 1.1, 0, 0);
1344
+ kf.rotate(BoneName.KNEE_R, -.6, 0, 0);
1345
+ kf.rotate(BoneName.FOOT_R, .25, 0, 0);
1346
+ kf.rotate(BoneName.PELVIS, .25, -.4, 0);
1347
+ kf.rotate(BoneName.SPINE_LOWER, .15, -.25, 0);
1348
+ kf.rotate(BoneName.KNEE_L, -.3, 0, 0);
1349
+ kf.rotate(BoneName.FOOT_L, 0, .35, 0);
1350
+ kf.position(BoneName.KNEE_R, 0, .2, .5);
1351
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1352
+ });
1353
+ this.currentTime += timeOffset;
1354
+ return this;
1355
+ }
1356
+ /**
1357
+ * Throat strike - Precise strike to trachea (기도격)
1358
+ * Fingers extended targeting windpipe
1359
+ * @korean 기도격
1360
+ */
1361
+ throatStrike(timeOffset = .08, easing = "ease-out") {
1362
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1363
+ kf.rotate(BoneName.SHOULDER_R, -.2, 0, .15);
1364
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .3);
1365
+ kf.rotate(BoneName.WRIST_R, -.5, 0, 0);
1366
+ kf.rotate(BoneName.SHOULDER_L, .3, .2, -.4);
1367
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.6);
1368
+ kf.rotate(BoneName.SPINE_UPPER, 0, .15, 0);
1369
+ kf.rotate(BoneName.PELVIS, 0, .1, 0);
1370
+ this.applyHandPose(kf, HAND_POSES.KNIFE_HAND, "right");
1371
+ this.applyHandPose(kf, HAND_POSES.FIST, "left");
1372
+ });
1373
+ this.currentTime += timeOffset;
1374
+ return this;
1375
+ }
1376
+ /**
1377
+ * Temple strike - Precision temple elbow (관자놀이격)
1378
+ * Horizontal elbow targeting temple
1379
+ * @korean 관자놀이격
1380
+ */
1381
+ templeElbow(timeOffset = .1, easing = "ease-out") {
1382
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1383
+ kf.rotate(BoneName.SHOULDER_R, -.8, .9, .7);
1384
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.7);
1385
+ kf.rotate(BoneName.WRIST_R, .2, 0, 0);
1386
+ kf.rotate(BoneName.SHOULDER_L, .3, .7, -.5);
1387
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.5);
1388
+ kf.rotate(BoneName.SPINE_UPPER, .1, .55, 0);
1389
+ kf.rotate(BoneName.SPINE_MIDDLE, 0, .4, 0);
1390
+ kf.rotate(BoneName.PELVIS, 0, .35, 0);
1391
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1392
+ this.applyHandPose(kf, HAND_POSES.GRAB, "left");
1393
+ });
1394
+ this.currentTime += timeOffset;
1395
+ return this;
1396
+ }
1397
+ /**
1398
+ * Nerve strike - Precision brachial plexus attack (신경격)
1399
+ * Short sharp strike to nerve cluster
1400
+ * @korean 신경격
1401
+ */
1402
+ nerveStrike(timeOffset = .06, easing = "ease-out") {
1403
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1404
+ kf.rotate(BoneName.SHOULDER_R, .1, .3, .4);
1405
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .6);
1406
+ kf.rotate(BoneName.WRIST_R, -.3, -.2, 0);
1407
+ kf.rotate(BoneName.SHOULDER_L, -.6, .3, -.5);
1408
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.4);
1409
+ kf.rotate(BoneName.SPINE_UPPER, 0, .12, 0);
1410
+ kf.rotate(BoneName.PELVIS, 0, .08, 0);
1411
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1412
+ this.applyHandPose(kf, HAND_POSES.FIST, "left");
1413
+ });
1414
+ this.currentTime += timeOffset;
1415
+ return this;
1416
+ }
1417
+ /**
1418
+ * Jugular strike - Knife hand to jugular vein (경정맥격)
1419
+ * Slicing motion to jugular
1420
+ * @korean 경정맥격
1421
+ */
1422
+ jugularStrike(timeOffset = .08, easing = "ease-out") {
1423
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1424
+ kf.rotate(BoneName.SHOULDER_R, -.4, .5, .35);
1425
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .4);
1426
+ kf.rotate(BoneName.WRIST_R, -.4, .3, -.2);
1427
+ kf.rotate(BoneName.SHOULDER_L, .2, -.3, -.3);
1428
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.7);
1429
+ kf.rotate(BoneName.SPINE_UPPER, 0, .28, .05);
1430
+ kf.rotate(BoneName.PELVIS, 0, .18, 0);
1431
+ this.applyHandPose(kf, HAND_POSES.KNIFE_HAND, "right");
1432
+ this.applyHandPose(kf, HAND_POSES.FIST, "left");
1433
+ });
1434
+ this.currentTime += timeOffset;
1435
+ return this;
1436
+ }
1437
+ /**
1438
+ * Occipital strike - Palm heel to base of skull (후두부격)
1439
+ * Upward palm strike to brain stem area
1440
+ * @korean 후두부격
1441
+ */
1442
+ occipitalStrike(timeOffset = .1, easing = "ease-out") {
1443
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1444
+ kf.rotate(BoneName.SHOULDER_R, -1.1, .2, .4);
1445
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .5);
1446
+ kf.rotate(BoneName.WRIST_R, -.8, 0, 0);
1447
+ kf.rotate(BoneName.SHOULDER_L, .5, .5, -.4);
1448
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.2);
1449
+ kf.rotate(BoneName.SPINE_UPPER, -.2, .2, 0);
1450
+ kf.rotate(BoneName.PELVIS, -.1, .15, 0);
1451
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
1452
+ this.applyHandPose(kf, HAND_POSES.OPEN_PALM, "right");
1453
+ this.applyHandPose(kf, HAND_POSES.GRAB, "left");
1454
+ });
1455
+ this.currentTime += timeOffset;
1456
+ return this;
1457
+ }
1458
+ /**
1459
+ * Jaw attack - Upward palm to jaw (턱격)
1460
+ * Palm strike causing jaw dislocation
1461
+ * @korean 턱격
1462
+ */
1463
+ jawStrike(timeOffset = .1, easing = "ease-out") {
1464
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1465
+ kf.rotate(BoneName.SHOULDER_R, -.9, .1, .3);
1466
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .3);
1467
+ kf.rotate(BoneName.WRIST_R, -.6, 0, .1);
1468
+ kf.rotate(BoneName.SHOULDER_L, .1, .3, -.5);
1469
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.5);
1470
+ kf.rotate(BoneName.SPINE_UPPER, -.15, .22, 0);
1471
+ kf.rotate(BoneName.SPINE_MIDDLE, -.1, .15, 0);
1472
+ kf.rotate(BoneName.PELVIS, -.08, .12, 0);
1473
+ kf.rotate(BoneName.KNEE_L, -.15, 0, 0);
1474
+ this.applyHandPose(kf, HAND_POSES.OPEN_PALM, "right");
1475
+ this.applyHandPose(kf, HAND_POSES.FIST, "left");
1476
+ });
1477
+ this.currentTime += timeOffset;
1478
+ return this;
1479
+ }
1480
+ /**
1481
+ * Eye gouge approach - Fingers to eyes (안격)
1482
+ * Two finger strike to eyes
1483
+ * @korean 안격
1484
+ */
1485
+ eyeGouge(timeOffset = .06, easing = "ease-out") {
1486
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1487
+ kf.rotate(BoneName.SHOULDER_R, -.35, .15, .25);
1488
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .2);
1489
+ kf.rotate(BoneName.WRIST_R, -.2, 0, 0);
1490
+ kf.rotate(BoneName.SHOULDER_L, .35, .45, -.35);
1491
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.3);
1492
+ kf.rotate(BoneName.SPINE_UPPER, 0, .08, 0);
1493
+ kf.rotate(BoneName.NECK, -.1, .05, 0);
1494
+ this.applyHandPose(kf, HAND_POSES.TWO_FINGER, "right");
1495
+ this.applyHandPose(kf, HAND_POSES.GRAB, "left");
1496
+ });
1497
+ this.currentTime += timeOffset;
1498
+ return this;
1499
+ }
1500
+ /**
1501
+ * Solar plexus strike - Deep body shot (명치격)
1502
+ * Penetrating strike to solar plexus
1503
+ * @korean 명치격
1504
+ */
1505
+ solarPlexusStrike(timeOffset = .1, easing = "ease-out") {
1506
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1507
+ kf.rotate(BoneName.SHOULDER_R, .15, .05, .35);
1508
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .15);
1509
+ kf.rotate(BoneName.WRIST_R, 0, 0, -.1);
1510
+ kf.rotate(BoneName.SHOULDER_L, .25, -.3, -.35);
1511
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.8);
1512
+ kf.rotate(BoneName.SPINE_UPPER, .08, .3, 0);
1513
+ kf.rotate(BoneName.SPINE_MIDDLE, .05, .25, 0);
1514
+ kf.rotate(BoneName.PELVIS, .05, .2, 0);
1515
+ kf.position(BoneName.PELVIS, 0, 0, .08);
1516
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1517
+ this.applyHandPose(kf, HAND_POSES.FIST, "left");
1518
+ });
1519
+ this.currentTime += timeOffset;
1520
+ return this;
1521
+ }
1522
+ /**
1523
+ * Liver shot - Hook to liver area (간격)
1524
+ * Hooking punch targeting liver
1525
+ * @korean 간격
1526
+ */
1527
+ liverShot(timeOffset = .1, easing = "ease-out") {
1528
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1529
+ kf.rotate(BoneName.SHOULDER_R, -.3, .6, .5);
1530
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.2);
1531
+ kf.rotate(BoneName.WRIST_R, 0, .2, 0);
1532
+ kf.rotate(BoneName.SHOULDER_L, -.5, .2, -.5);
1533
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.5);
1534
+ kf.rotate(BoneName.SPINE_UPPER, .05, .4, 0);
1535
+ kf.rotate(BoneName.SPINE_MIDDLE, .03, .3, 0);
1536
+ kf.rotate(BoneName.PELVIS, 0, .25, 0);
1537
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1538
+ this.applyHandPose(kf, HAND_POSES.FIST, "left");
1539
+ });
1540
+ this.currentTime += timeOffset;
1541
+ return this;
1542
+ }
1543
+ /**
1544
+ * Kidney strike - Hook to kidney from behind (신장격)
1545
+ * Rear kidney targeting hook
1546
+ * @korean 신장격
1547
+ */
1548
+ kidneyStrike(timeOffset = .1, easing = "ease-out") {
1549
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1550
+ kf.rotate(BoneName.SHOULDER_R, .1, .7, .6);
1551
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1);
1552
+ kf.rotate(BoneName.WRIST_R, 0, .15, -.1);
1553
+ kf.rotate(BoneName.SHOULDER_L, .4, .5, -.3);
1554
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.2);
1555
+ kf.rotate(BoneName.SPINE_UPPER, 0, .5, 0);
1556
+ kf.rotate(BoneName.SPINE_MIDDLE, 0, .4, 0);
1557
+ kf.rotate(BoneName.PELVIS, 0, .35, 0);
1558
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1559
+ this.applyHandPose(kf, HAND_POSES.GRAB, "left");
1560
+ });
1561
+ this.currentTime += timeOffset;
1562
+ return this;
1563
+ }
1564
+ /**
1565
+ * Spine strike - Downward elbow to spine (척추격)
1566
+ * 12-6 elbow targeting spine
1567
+ * @korean 척추격
1568
+ */
1569
+ spineStrike(timeOffset = .12, easing = "ease-in") {
1570
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1571
+ kf.rotate(BoneName.SHOULDER_R, -1.3, .1, .4);
1572
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.9);
1573
+ kf.rotate(BoneName.WRIST_R, .3, 0, 0);
1574
+ kf.rotate(BoneName.SHOULDER_L, .6, .4, -.35);
1575
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1);
1576
+ kf.rotate(BoneName.SPINE_UPPER, .35, .1, 0);
1577
+ kf.rotate(BoneName.SPINE_MIDDLE, .25, .08, 0);
1578
+ kf.rotate(BoneName.PELVIS, .2, .05, 0);
1579
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
1580
+ this.applyHandPose(kf, HAND_POSES.GRAB, "left");
1581
+ });
1582
+ this.currentTime += timeOffset;
1583
+ return this;
1584
+ }
1585
+ /**
1586
+ * Groin strike - Low rising knee or palm (낭심격)
1587
+ * Targeting groin area
1588
+ * @korean 낭심격
1589
+ */
1590
+ groinStrike(timeOffset = .08, easing = "ease-out") {
1591
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1592
+ kf.rotate(BoneName.SHOULDER_R, .4, .1, .3);
1593
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .4);
1594
+ kf.rotate(BoneName.WRIST_R, -.5, 0, .2);
1595
+ kf.rotate(BoneName.SHOULDER_L, -.4, .3, -.5);
1596
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.4);
1597
+ kf.rotate(BoneName.SPINE_UPPER, .15, .15, 0);
1598
+ kf.rotate(BoneName.PELVIS, .2, .1, 0);
1599
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
1600
+ this.applyHandPose(kf, HAND_POSES.OPEN_PALM, "right");
1601
+ this.applyHandPose(kf, HAND_POSES.FIST, "left");
1602
+ });
1603
+ this.currentTime += timeOffset;
1604
+ return this;
1605
+ }
1606
+ /**
1607
+ * Throw entry - Step in and grab (던지기진입)
1608
+ * @korean 던지기진입
1609
+ */
1610
+ throwEntry(timeOffset = .15, easing = "ease-out") {
1611
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1612
+ kf.rotate(BoneName.SHOULDER_L, .6, .5, -.3);
1613
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1);
1614
+ kf.rotate(BoneName.SHOULDER_R, .8, -.3, .2);
1615
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.2);
1616
+ kf.rotate(BoneName.PELVIS, 0, .8, 0);
1617
+ kf.rotate(BoneName.SPINE_UPPER, 0, .5, 0);
1618
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
1619
+ kf.rotate(BoneName.KNEE_R, -.3, 0, 0);
1620
+ kf.position(BoneName.PELVIS, 0, -.05, .2);
1621
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1622
+ });
1623
+ this.currentTime += timeOffset;
1624
+ return this;
1625
+ }
1626
+ /**
1627
+ * Throw execution - Hip under and throw (던지기)
1628
+ * @korean 던지기
1629
+ */
1630
+ throwExecute(timeOffset = .15, easing = "ease-out") {
1631
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1632
+ kf.rotate(BoneName.SHOULDER_L, -.4, .8, -.8);
1633
+ kf.rotate(BoneName.SHOULDER_R, -.2, -.6, .6);
1634
+ kf.rotate(BoneName.PELVIS, .5, 1.8, 0);
1635
+ kf.rotate(BoneName.SPINE_LOWER, .6, 1.5, 0);
1636
+ kf.rotate(BoneName.SPINE_UPPER, .7, 1.2, -.2);
1637
+ kf.rotate(BoneName.KNEE_L, -.3, 0, 0);
1638
+ kf.rotate(BoneName.KNEE_R, -.2, 0, 0);
1639
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1640
+ });
1641
+ this.currentTime += timeOffset;
1642
+ return this;
1643
+ }
1644
+ /**
1645
+ * Joint lock application (관절기)
1646
+ * @korean 관절기
1647
+ */
1648
+ jointLock(timeOffset = .15, easing = "ease-in") {
1649
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1650
+ kf.rotate(BoneName.SHOULDER_L, -.1, 1, -.6);
1651
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.7);
1652
+ kf.rotate(BoneName.WRIST_L, 0, -.6, -.4);
1653
+ kf.rotate(BoneName.SHOULDER_R, .1, -.8, .7);
1654
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.4);
1655
+ kf.rotate(BoneName.PELVIS, .15, .6, 0);
1656
+ kf.rotate(BoneName.SPINE_UPPER, .25, .4, -.2);
1657
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
1658
+ kf.position(BoneName.PELVIS, 0, -.1, .05);
1659
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1660
+ });
1661
+ this.currentTime += timeOffset;
1662
+ return this;
1663
+ }
1664
+ /**
1665
+ * Wrist lock grab - Two-hand wrist control (손목잡기)
1666
+ * @korean 손목잡기
1667
+ */
1668
+ wristGrab(timeOffset = .1, easing = "ease-out") {
1669
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1670
+ kf.rotate(BoneName.SHOULDER_R, .2, .3, .4);
1671
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1);
1672
+ kf.rotate(BoneName.WRIST_R, .3, -.4, .2);
1673
+ kf.rotate(BoneName.SHOULDER_L, .3, .4, -.3);
1674
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.2);
1675
+ kf.rotate(BoneName.WRIST_L, -.2, .3, 0);
1676
+ kf.rotate(BoneName.PELVIS, 0, .2, 0);
1677
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1678
+ });
1679
+ this.currentTime += timeOffset;
1680
+ return this;
1681
+ }
1682
+ /**
1683
+ * Wrist lock twist - Apply rotational pressure (손목꺾기)
1684
+ * @korean 손목꺾기
1685
+ */
1686
+ wristTwist(timeOffset = .15, easing = "ease-in") {
1687
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1688
+ kf.rotate(BoneName.SHOULDER_R, -.1, .5, .6);
1689
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.3);
1690
+ kf.rotate(BoneName.WRIST_R, .5, -.5, .4);
1691
+ kf.rotate(BoneName.SHOULDER_L, .1, .6, -.4);
1692
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.4);
1693
+ kf.rotate(BoneName.WRIST_L, -.3, .4, -.2);
1694
+ kf.rotate(BoneName.PELVIS, 0, .4, 0);
1695
+ kf.rotate(BoneName.SPINE_UPPER, .1, .3, 0);
1696
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
1697
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1698
+ });
1699
+ this.currentTime += timeOffset;
1700
+ return this;
1701
+ }
1702
+ /**
1703
+ * Arm bar entry - Wrap arm across body (팔꺾기진입)
1704
+ * @korean 팔꺾기진입
1705
+ */
1706
+ armBarEntry(timeOffset = .15, easing = "ease-out") {
1707
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1708
+ kf.rotate(BoneName.SHOULDER_R, .2, .6, .5);
1709
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.4);
1710
+ kf.rotate(BoneName.SHOULDER_L, .3, .5, -.4);
1711
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.3);
1712
+ kf.rotate(BoneName.PELVIS, .2, .5, 0);
1713
+ kf.rotate(BoneName.SPINE_UPPER, .1, .4, 0);
1714
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1715
+ });
1716
+ this.currentTime += timeOffset;
1717
+ return this;
1718
+ }
1719
+ /**
1720
+ * Arm bar drop - Go to ground for submission (팔꺾기)
1721
+ * @korean 팔꺾기
1722
+ */
1723
+ armBarDrop(timeOffset = .2, easing = "ease-in") {
1724
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1725
+ kf.rotate(BoneName.SHOULDER_R, -.3, .9, .8);
1726
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.6);
1727
+ kf.rotate(BoneName.SHOULDER_L, 0, .8, -.6);
1728
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.6);
1729
+ kf.rotate(BoneName.PELVIS, 1, .2, 0);
1730
+ kf.rotate(BoneName.SPINE_UPPER, .7, .15, 0);
1731
+ kf.rotate(BoneName.HIP_R, 1.4, 0, .4);
1732
+ kf.rotate(BoneName.KNEE_R, -.3, 0, 0);
1733
+ kf.rotate(BoneName.HIP_L, 1.2, 0, -.3);
1734
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
1735
+ kf.position(BoneName.PELVIS, 0, -.4, -.1);
1736
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1737
+ });
1738
+ this.currentTime += timeOffset;
1739
+ return this;
1740
+ }
1741
+ /**
1742
+ * Slam lift - Hoist opponent up (슬램올리기)
1743
+ * @korean 슬램올리기
1744
+ */
1745
+ slamLift(timeOffset = .2, easing = "ease-out") {
1746
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1747
+ kf.rotate(BoneName.SHOULDER_L, .9, .2, -.3);
1748
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -.8);
1749
+ kf.rotate(BoneName.SHOULDER_R, .9, -.2, .3);
1750
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .8);
1751
+ kf.rotate(BoneName.KNEE_L, -.1, 0, 0);
1752
+ kf.rotate(BoneName.KNEE_R, -.1, 0, 0);
1753
+ kf.rotate(BoneName.PELVIS, -.3, 0, 0);
1754
+ kf.rotate(BoneName.SPINE_UPPER, -.2, 0, 0);
1755
+ kf.position(BoneName.PELVIS, 0, .1, 0);
1756
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1757
+ });
1758
+ this.currentTime += timeOffset;
1759
+ return this;
1760
+ }
1761
+ /**
1762
+ * Slam down - Drive opponent to ground (슬램)
1763
+ * @korean 슬램
1764
+ */
1765
+ slamDown(timeOffset = .15, easing = "ease-in") {
1766
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1767
+ kf.rotate(BoneName.SHOULDER_L, .3, .3, -.6);
1768
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.4);
1769
+ kf.rotate(BoneName.SHOULDER_R, .3, -.3, .6);
1770
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.4);
1771
+ kf.rotate(BoneName.KNEE_L, -.6, 0, 0);
1772
+ kf.rotate(BoneName.KNEE_R, -.6, 0, 0);
1773
+ kf.rotate(BoneName.PELVIS, .4, 0, 0);
1774
+ kf.rotate(BoneName.SPINE_UPPER, .3, 0, 0);
1775
+ kf.rotate(BoneName.SPINE_MIDDLE, .2, 0, 0);
1776
+ kf.position(BoneName.PELVIS, 0, -.15, .2);
1777
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1778
+ });
1779
+ this.currentTime += timeOffset;
1780
+ return this;
1781
+ }
1782
+ /**
1783
+ * Hip throw - Classic hip projection (배대되치기)
1784
+ * Rotating hip throw with arm control
1785
+ * @korean 배대되치기
1786
+ */
1787
+ hipThrow(timeOffset = .18, easing = "ease-out") {
1788
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1789
+ kf.rotate(BoneName.PELVIS, .3, 2, 0);
1790
+ kf.rotate(BoneName.SPINE_LOWER, .4, 1.6, 0);
1791
+ kf.rotate(BoneName.SPINE_UPPER, .5, 1.3, -.15);
1792
+ kf.rotate(BoneName.SHOULDER_L, -.5, .9, -.7);
1793
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -.8);
1794
+ kf.rotate(BoneName.SHOULDER_R, -.3, -.5, .5);
1795
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.3);
1796
+ kf.rotate(BoneName.KNEE_L, -.5, 0, 0);
1797
+ kf.rotate(BoneName.KNEE_R, -.35, 0, 0);
1798
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1799
+ });
1800
+ this.currentTime += timeOffset;
1801
+ return this;
1802
+ }
1803
+ /**
1804
+ * Takedown entry - Shoot and grab legs (태클진입)
1805
+ * Double leg takedown initiation
1806
+ * @korean 태클진입
1807
+ */
1808
+ takedownShoot(timeOffset = .12, easing = "ease-out") {
1809
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1810
+ kf.rotate(BoneName.PELVIS, .7, .1, 0);
1811
+ kf.rotate(BoneName.SPINE_LOWER, .5, .08, 0);
1812
+ kf.rotate(BoneName.SPINE_UPPER, .4, .05, 0);
1813
+ kf.rotate(BoneName.SHOULDER_L, .6, .4, -.35);
1814
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -.6);
1815
+ kf.rotate(BoneName.SHOULDER_R, .6, -.4, .35);
1816
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .6);
1817
+ kf.rotate(BoneName.KNEE_L, -.8, 0, 0);
1818
+ kf.rotate(BoneName.KNEE_R, -1.2, 0, 0);
1819
+ kf.rotate(BoneName.HIP_R, .6, 0, 0);
1820
+ kf.position(BoneName.PELVIS, 0, -.25, .15);
1821
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1822
+ });
1823
+ this.currentTime += timeOffset;
1824
+ return this;
1825
+ }
1826
+ /**
1827
+ * Takedown finish - Lift and dump (태클완료)
1828
+ * Complete the takedown with dump
1829
+ * @korean 태클완료
1830
+ */
1831
+ takedownDump(timeOffset = .15, easing = "ease-in") {
1832
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1833
+ kf.rotate(BoneName.PELVIS, .2, .5, 0);
1834
+ kf.rotate(BoneName.SPINE_LOWER, .15, .4, 0);
1835
+ kf.rotate(BoneName.SPINE_UPPER, .1, .35, -.1);
1836
+ kf.rotate(BoneName.SHOULDER_L, .4, .6, -.5);
1837
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.1);
1838
+ kf.rotate(BoneName.SHOULDER_R, .4, -.6, .5);
1839
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.1);
1840
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
1841
+ kf.rotate(BoneName.KNEE_R, -.5, 0, 0);
1842
+ kf.position(BoneName.PELVIS, 0, -.1, .25);
1843
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1844
+ });
1845
+ this.currentTime += timeOffset;
1846
+ return this;
1847
+ }
1848
+ /**
1849
+ * Elbow lock application - Arm bar pressure (팔꿈치꺾기)
1850
+ * Specific elbow hyperextension lock
1851
+ * @korean 팔꿈치꺾기
1852
+ */
1853
+ elbowLockApply(timeOffset = .18, easing = "ease-in") {
1854
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1855
+ kf.rotate(BoneName.SHOULDER_R, .3, .7, .6);
1856
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.5);
1857
+ kf.rotate(BoneName.WRIST_R, .2, -.3, .1);
1858
+ kf.rotate(BoneName.SHOULDER_L, .2, .8, -.5);
1859
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.6);
1860
+ kf.rotate(BoneName.WRIST_L, -.2, .35, -.1);
1861
+ kf.rotate(BoneName.PELVIS, -.15, .4, 0);
1862
+ kf.rotate(BoneName.SPINE_UPPER, -.25, .35, 0);
1863
+ kf.rotate(BoneName.KNEE_L, -.3, 0, 0);
1864
+ kf.rotate(BoneName.KNEE_R, -.35, 0, 0);
1865
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1866
+ });
1867
+ this.currentTime += timeOffset;
1868
+ return this;
1869
+ }
1870
+ /**
1871
+ * Shoulder lock twist - Shoulder manipulation (어깨꺾기)
1872
+ * Rotational shoulder joint attack
1873
+ * @korean 어깨꺾기
1874
+ */
1875
+ shoulderLockTwist(timeOffset = .2, easing = "ease-in") {
1876
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1877
+ kf.rotate(BoneName.SHOULDER_R, -.2, .9, .8);
1878
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.2);
1879
+ kf.rotate(BoneName.WRIST_R, .4, -.5, .3);
1880
+ kf.rotate(BoneName.SHOULDER_L, .5, .7, -.4);
1881
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1);
1882
+ kf.rotate(BoneName.PELVIS, 0, .7, 0);
1883
+ kf.rotate(BoneName.SPINE_UPPER, .1, .55, 0);
1884
+ kf.rotate(BoneName.SPINE_MIDDLE, .05, .45, 0);
1885
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
1886
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1887
+ });
1888
+ this.currentTime += timeOffset;
1889
+ return this;
1890
+ }
1891
+ /**
1892
+ * Finger manipulation - Small joint lock (손가락비틀기)
1893
+ * Precise finger control technique
1894
+ * @korean 손가락비틀기
1895
+ */
1896
+ fingerLockTwist(timeOffset = .12, easing = "ease-in") {
1897
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1898
+ kf.rotate(BoneName.SHOULDER_R, .15, .4, .35);
1899
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .9);
1900
+ kf.rotate(BoneName.WRIST_R, .5, -.6, .4);
1901
+ kf.rotate(BoneName.SHOULDER_L, .2, .5, -.3);
1902
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1);
1903
+ kf.rotate(BoneName.WRIST_L, -.3, .5, -.2);
1904
+ kf.rotate(BoneName.PELVIS, 0, .25, 0);
1905
+ kf.rotate(BoneName.SPINE_UPPER, .08, .2, 0);
1906
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1907
+ });
1908
+ this.currentTime += timeOffset;
1909
+ return this;
1910
+ }
1911
+ /**
1912
+ * Choke grip - Rear naked choke position (교살잡기)
1913
+ * Setting up blood choke
1914
+ * @korean 교살잡기
1915
+ */
1916
+ chokeGrip(timeOffset = .15, easing = "ease-in") {
1917
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1918
+ kf.rotate(BoneName.SHOULDER_R, -.4, .6, .7);
1919
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.8);
1920
+ kf.rotate(BoneName.WRIST_R, .2, .3, 0);
1921
+ kf.rotate(BoneName.SHOULDER_L, -.6, .5, -.5);
1922
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.9);
1923
+ kf.rotate(BoneName.WRIST_L, 0, .2, -.1);
1924
+ kf.rotate(BoneName.SPINE_UPPER, .2, .2, 0);
1925
+ kf.rotate(BoneName.PELVIS, .15, .15, 0);
1926
+ kf.rotate(BoneName.KNEE_L, -.3, 0, 0);
1927
+ kf.rotate(BoneName.KNEE_R, -.35, 0, 0);
1928
+ this.applyHandPose(kf, HAND_POSES.GRAB, "right");
1929
+ this.applyHandPose(kf, HAND_POSES.GRAB, "left");
1930
+ });
1931
+ this.currentTime += timeOffset;
1932
+ return this;
1933
+ }
1934
+ /**
1935
+ * Ground control - Mounted position (마운트)
1936
+ * Dominant ground position
1937
+ * @korean 마운트
1938
+ */
1939
+ groundMount(timeOffset = .2, easing = "ease-out") {
1940
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1941
+ kf.rotate(BoneName.PELVIS, .4, 0, 0);
1942
+ kf.rotate(BoneName.SPINE_UPPER, .15, 0, 0);
1943
+ kf.rotate(BoneName.SHOULDER_L, .4, .3, -.4);
1944
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -.8);
1945
+ kf.rotate(BoneName.SHOULDER_R, .4, -.3, .4);
1946
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .8);
1947
+ kf.rotate(BoneName.HIP_L, .8, 0, -.6);
1948
+ kf.rotate(BoneName.KNEE_L, -1.4, 0, 0);
1949
+ kf.rotate(BoneName.HIP_R, .8, 0, .6);
1950
+ kf.rotate(BoneName.KNEE_R, -1.4, 0, 0);
1951
+ kf.position(BoneName.PELVIS, 0, -.4, 0);
1952
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1953
+ });
1954
+ this.currentTime += timeOffset;
1955
+ return this;
1956
+ }
1957
+ /**
1958
+ * Clinch grab - Arms wrap around opponent (클린치잡기)
1959
+ * @korean 클린치잡기
1960
+ */
1961
+ clinchGrab(timeOffset = .12, easing = "ease-out") {
1962
+ const clinch = MARTIAL_POSES.CLINCH;
1963
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1964
+ kf.rotate(BoneName.SHOULDER_L, ...clinch.leftShoulder);
1965
+ kf.rotate(BoneName.ELBOW_L, ...clinch.leftElbow);
1966
+ kf.rotate(BoneName.SHOULDER_R, ...clinch.rightShoulder);
1967
+ kf.rotate(BoneName.ELBOW_R, ...clinch.rightElbow);
1968
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
1969
+ kf.rotate(BoneName.KNEE_R, -.4, 0, 0);
1970
+ kf.rotate(BoneName.PELVIS, .2, 0, 0);
1971
+ this.applyHandPose(kf, HAND_POSES.GRAB, "both");
1972
+ });
1973
+ this.currentTime += timeOffset;
1974
+ return this;
1975
+ }
1976
+ /**
1977
+ * Counter parry - Quick deflection (반격막기)
1978
+ * @korean 반격막기
1979
+ */
1980
+ counterParry(timeOffset = .08, easing = "ease-out") {
1981
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1982
+ kf.rotate(BoneName.SHOULDER_L, .2, .5, -.6);
1983
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -.9);
1984
+ kf.rotate(BoneName.WRIST_L, 0, .3, 0);
1985
+ kf.rotate(BoneName.SHOULDER_R, .1, 0, -.2);
1986
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.5);
1987
+ kf.rotate(BoneName.PELVIS, 0, -.2, 0);
1988
+ this.applyHandPose(kf, HAND_POSES.OPEN_PALM, "left");
1989
+ });
1990
+ this.currentTime += timeOffset;
1991
+ return this;
1992
+ }
1993
+ /**
1994
+ * Counter strike - Fast return strike (반격치기)
1995
+ * @korean 반격치기
1996
+ */
1997
+ counterStrike(timeOffset = .08, easing = "ease-out") {
1998
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
1999
+ kf.rotate(BoneName.SHOULDER_R, -.6, 0, .4);
2000
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .1);
2001
+ kf.rotate(BoneName.WRIST_R, 0, 0, -.2);
2002
+ kf.rotate(BoneName.SPINE_UPPER, 0, .35, 0);
2003
+ kf.rotate(BoneName.SPINE_MIDDLE, 0, .25, 0);
2004
+ kf.rotate(BoneName.PELVIS, 0, .2, 0);
2005
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
2006
+ });
2007
+ this.currentTime += timeOffset;
2008
+ return this;
2009
+ }
2010
+ /**
2011
+ * Sweep - Low sweeping leg (걸기)
2012
+ * @korean 걸기
2013
+ */
2014
+ sweep(timeOffset = .15, easing = "ease-out") {
2015
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2016
+ kf.rotate(BoneName.KNEE_L, -1.2, 0, 0);
2017
+ kf.rotate(BoneName.HIP_R, .5, 0, 1.5);
2018
+ kf.rotate(BoneName.KNEE_R, -.15, 0, 0);
2019
+ kf.rotate(BoneName.PELVIS, .3, -.8, 0);
2020
+ kf.rotate(BoneName.SPINE_UPPER, .5, -.4, 0);
2021
+ kf.position(BoneName.FOOT_R, .8, -.1, 0);
2022
+ kf.position(BoneName.PELVIS, .1, -.3, 0);
2023
+ });
2024
+ this.currentTime += timeOffset;
2025
+ return this;
2026
+ }
2027
+ /**
2028
+ * Counter parry - Deflect incoming attack (막기)
2029
+ * @korean 막기
2030
+ */
2031
+ parry(timeOffset = .1, easing = "ease-out") {
2032
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2033
+ kf.rotate(BoneName.SHOULDER_L, .2, .5, -.8);
2034
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -.8);
2035
+ kf.rotate(BoneName.WRIST_L, 0, .4, 0);
2036
+ kf.rotate(BoneName.PELVIS, 0, -.3, 0);
2037
+ kf.rotate(BoneName.SPINE_UPPER, 0, -.2, 0);
2038
+ kf.rotate(BoneName.KNEE_L, -.3, 0, 0);
2039
+ this.applyHandPose(kf, HAND_POSES.OPEN_PALM, "left");
2040
+ this.applyHandPose(kf, HAND_POSES.FIST, "right");
2041
+ });
2042
+ this.currentTime += timeOffset;
2043
+ return this;
2044
+ }
2045
+ /**
2046
+ * High block defensive pose (상단막기)
2047
+ * @korean 상단막기
2048
+ */
2049
+ blockHigh(timeOffset = .1, easing = "ease-out") {
2050
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2051
+ kf.rotate(BoneName.SHOULDER_L, -1, .3, -.6);
2052
+ kf.rotate(BoneName.SHOULDER_R, -1, -.3, .6);
2053
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.3);
2054
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.3);
2055
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
2056
+ this.applyHandPose(kf, HAND_POSES.FIST, "both");
2057
+ });
2058
+ this.currentTime += timeOffset;
2059
+ return this;
2060
+ }
2061
+ /**
2062
+ * Low block defensive pose (하단막기)
2063
+ * @korean 하단막기
2064
+ */
2065
+ blockLow(timeOffset = .1, easing = "ease-out") {
2066
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2067
+ kf.rotate(BoneName.SHOULDER_L, .3, .2, -.4);
2068
+ kf.rotate(BoneName.SHOULDER_R, .3, -.2, .4);
2069
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -.6);
2070
+ kf.rotate(BoneName.ELBOW_R, 0, 0, .6);
2071
+ kf.rotate(BoneName.KNEE_L, -.35, 0, 0);
2072
+ kf.rotate(BoneName.PELVIS, .1, 0, 0);
2073
+ this.applyHandPose(kf, HAND_POSES.FIST, "both");
2074
+ });
2075
+ this.currentTime += timeOffset;
2076
+ return this;
2077
+ }
2078
+ /**
2079
+ * Mid-section block - Standard middle block (중단막기)
2080
+ * Arms crossed protecting torso
2081
+ * @korean 중단막기
2082
+ */
2083
+ blockMiddle(timeOffset = .1, easing = "ease-out") {
2084
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2085
+ kf.rotate(BoneName.SHOULDER_L, -.4, .5, -.5);
2086
+ kf.rotate(BoneName.SHOULDER_R, .2, 0, .3);
2087
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -1.1);
2088
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.4);
2089
+ kf.rotate(BoneName.SPINE_UPPER, 0, -.15, 0);
2090
+ kf.rotate(BoneName.KNEE_L, -.25, 0, 0);
2091
+ this.applyHandPose(kf, HAND_POSES.FIST, "both");
2092
+ });
2093
+ this.currentTime += timeOffset;
2094
+ return this;
2095
+ }
2096
+ /**
2097
+ * Knife hand block - Open hand deflection (수도막기)
2098
+ * Blade of hand for blocking
2099
+ * @korean 수도막기
2100
+ */
2101
+ blockKnifeHand(timeOffset = .1, easing = "ease-out") {
2102
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2103
+ kf.rotate(BoneName.SHOULDER_L, -.5, .6, -.5);
2104
+ kf.rotate(BoneName.ELBOW_L, 0, 0, -.7);
2105
+ kf.rotate(BoneName.WRIST_L, -.3, .4, 0);
2106
+ kf.rotate(BoneName.SHOULDER_R, .3, .2, .4);
2107
+ kf.rotate(BoneName.ELBOW_R, 0, 0, 1.3);
2108
+ kf.rotate(BoneName.SPINE_UPPER, 0, -.1, 0);
2109
+ kf.rotate(BoneName.KNEE_L, -.25, 0, 0);
2110
+ this.applyHandPose(kf, HAND_POSES.KNIFE_HAND, "left");
2111
+ this.applyHandPose(kf, HAND_POSES.KNIFE_HAND, "right");
2112
+ });
2113
+ this.currentTime += timeOffset;
2114
+ return this;
2115
+ }
2116
+ /**
2117
+ * Step forward or backward (스텝)
2118
+ * @korean 스텝
2119
+ */
2120
+ step(timeOffset = .12, easing = "ease-out") {
2121
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2122
+ kf.rotate(BoneName.HIP_R, .3, 0, 0);
2123
+ kf.rotate(BoneName.KNEE_R, -.4, 0, 0);
2124
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
2125
+ kf.position(BoneName.PELVIS, 0, 0, .1);
2126
+ });
2127
+ this.currentTime += timeOffset;
2128
+ return this;
2129
+ }
2130
+ /**
2131
+ * Forward step - Advancing stance (전진)
2132
+ * Weight transfers forward with lead foot
2133
+ * @korean 전진
2134
+ */
2135
+ forwardStep(timeOffset = .12, easing = "ease-out") {
2136
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2137
+ kf.rotate(BoneName.HIP_R, .35, .1, 0);
2138
+ kf.rotate(BoneName.KNEE_R, -.3, 0, 0);
2139
+ kf.rotate(BoneName.FOOT_R, .1, 0, 0);
2140
+ kf.rotate(BoneName.HIP_L, -.1, 0, 0);
2141
+ kf.rotate(BoneName.KNEE_L, -.15, 0, 0);
2142
+ kf.rotate(BoneName.SPINE_UPPER, .05, 0, 0);
2143
+ kf.position(BoneName.PELVIS, 0, 0, .15);
2144
+ });
2145
+ this.currentTime += timeOffset;
2146
+ return this;
2147
+ }
2148
+ /**
2149
+ * Backward step - Retreating stance (후진)
2150
+ * Weight transfers backward with rear foot
2151
+ * @korean 후진
2152
+ */
2153
+ backwardStep(timeOffset = .12, easing = "ease-out") {
2154
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2155
+ kf.rotate(BoneName.HIP_R, -.1, 0, 0);
2156
+ kf.rotate(BoneName.KNEE_R, -.25, 0, 0);
2157
+ kf.rotate(BoneName.HIP_L, .25, .1, 0);
2158
+ kf.rotate(BoneName.KNEE_L, -.35, 0, 0);
2159
+ kf.rotate(BoneName.FOOT_L, .1, 0, 0);
2160
+ kf.rotate(BoneName.SPINE_UPPER, -.05, 0, 0);
2161
+ kf.position(BoneName.PELVIS, 0, 0, -.15);
2162
+ });
2163
+ this.currentTime += timeOffset;
2164
+ return this;
2165
+ }
2166
+ /**
2167
+ * Side step left - Lateral evasion (좌측이동)
2168
+ * Quick lateral movement to the left
2169
+ * @korean 좌측이동
2170
+ */
2171
+ sideStepLeft(timeOffset = .1, easing = "ease-out") {
2172
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2173
+ kf.rotate(BoneName.HIP_L, .1, 0, -.3);
2174
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
2175
+ kf.rotate(BoneName.HIP_R, .05, 0, -.15);
2176
+ kf.rotate(BoneName.KNEE_R, -.25, 0, 0);
2177
+ kf.rotate(BoneName.PELVIS, 0, -.1, 0);
2178
+ kf.position(BoneName.PELVIS, -.2, 0, 0);
2179
+ });
2180
+ this.currentTime += timeOffset;
2181
+ return this;
2182
+ }
2183
+ /**
2184
+ * Side step right - Lateral evasion (우측이동)
2185
+ * Quick lateral movement to the right
2186
+ * @korean 우측이동
2187
+ */
2188
+ sideStepRight(timeOffset = .1, easing = "ease-out") {
2189
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2190
+ kf.rotate(BoneName.HIP_R, .1, 0, .3);
2191
+ kf.rotate(BoneName.KNEE_R, -.2, 0, 0);
2192
+ kf.rotate(BoneName.HIP_L, .05, 0, .15);
2193
+ kf.rotate(BoneName.KNEE_L, -.25, 0, 0);
2194
+ kf.rotate(BoneName.PELVIS, 0, .1, 0);
2195
+ kf.position(BoneName.PELVIS, .2, 0, 0);
2196
+ });
2197
+ this.currentTime += timeOffset;
2198
+ return this;
2199
+ }
2200
+ /**
2201
+ * Lateral shift movement (측면이동)
2202
+ * @korean 측면이동
2203
+ */
2204
+ shift(timeOffset = .12, easing = "ease-out") {
2205
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2206
+ kf.rotate(BoneName.KNEE_L, -.25, 0, 0);
2207
+ kf.rotate(BoneName.KNEE_R, -.25, 0, 0);
2208
+ kf.rotate(BoneName.PELVIS, 0, .2, 0);
2209
+ kf.position(BoneName.PELVIS, .15, 0, 0);
2210
+ });
2211
+ this.currentTime += timeOffset;
2212
+ return this;
2213
+ }
2214
+ /**
2215
+ * Rotation/pivot movement (회전)
2216
+ * @korean 회전
2217
+ */
2218
+ rotate(timeOffset = .12, easing = "ease-out") {
2219
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2220
+ kf.rotate(BoneName.PELVIS, 0, .78, 0);
2221
+ kf.rotate(BoneName.SPINE_LOWER, 0, .5, 0);
2222
+ kf.rotate(BoneName.SPINE_UPPER, 0, .3, 0);
2223
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
2224
+ });
2225
+ this.currentTime += timeOffset;
2226
+ return this;
2227
+ }
2228
+ /**
2229
+ * Full 360° spin (회전)
2230
+ * @korean 전체회전
2231
+ */
2232
+ spin(timeOffset = .2, easing = "ease-out") {
2233
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2234
+ kf.rotate(BoneName.PELVIS, 0, 3.14, 0);
2235
+ kf.rotate(BoneName.SPINE_LOWER, 0, 2.8, 0);
2236
+ kf.rotate(BoneName.SPINE_UPPER, 0, 2.5, 0);
2237
+ kf.rotate(BoneName.HEAD, 0, .5, 0);
2238
+ });
2239
+ this.currentTime += timeOffset;
2240
+ return this;
2241
+ }
2242
+ /**
2243
+ * Spinning kick finish (회전차기)
2244
+ * @korean 회전차기
2245
+ */
2246
+ spinKick(timeOffset = .12, easing = "ease-out") {
2247
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2248
+ kf.rotate(BoneName.HIP_R, .8, 0, 1.2);
2249
+ kf.rotate(BoneName.KNEE_R, -.2, 0, 0);
2250
+ kf.rotate(BoneName.FOOT_R, .3, 0, .2);
2251
+ kf.position(BoneName.FOOT_R, .5, .3, 0);
2252
+ });
2253
+ this.currentTime += timeOffset;
2254
+ return this;
2255
+ }
2256
+ /**
2257
+ * Jump/hop movement (점프)
2258
+ * @korean 점프
2259
+ */
2260
+ jump(timeOffset = .15, easing = "ease-out") {
2261
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2262
+ kf.rotate(BoneName.KNEE_L, -.4, 0, 0);
2263
+ kf.rotate(BoneName.KNEE_R, -.4, 0, 0);
2264
+ kf.rotate(BoneName.FOOT_L, .3, 0, 0);
2265
+ kf.rotate(BoneName.FOOT_R, .3, 0, 0);
2266
+ kf.position(BoneName.PELVIS, 0, .15, 0);
2267
+ });
2268
+ this.currentTime += timeOffset;
2269
+ return this;
2270
+ }
2271
+ /**
2272
+ * Duck/crouch movement (숙이기)
2273
+ * @korean 숙이기
2274
+ */
2275
+ duck(timeOffset = .1, easing = "ease-out") {
2276
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2277
+ kf.rotate(BoneName.KNEE_L, -.6, 0, 0);
2278
+ kf.rotate(BoneName.KNEE_R, -.6, 0, 0);
2279
+ kf.rotate(BoneName.PELVIS, .15, 0, 0);
2280
+ kf.rotate(BoneName.SPINE_UPPER, .2, 0, 0);
2281
+ kf.position(BoneName.PELVIS, 0, -.15, 0);
2282
+ });
2283
+ this.currentTime += timeOffset;
2284
+ return this;
2285
+ }
2286
+ /**
2287
+ * Lean back movement (뒤로젖히기)
2288
+ * @korean 뒤로젖히기
2289
+ */
2290
+ lean(timeOffset = .1, easing = "ease-out") {
2291
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2292
+ kf.rotate(BoneName.SPINE_LOWER, -.2, 0, 0);
2293
+ kf.rotate(BoneName.SPINE_UPPER, -.25, 0, 0);
2294
+ kf.rotate(BoneName.KNEE_L, -.15, 0, 0);
2295
+ kf.rotate(BoneName.PELVIS, -.1, 0, 0);
2296
+ });
2297
+ this.currentTime += timeOffset;
2298
+ return this;
2299
+ }
2300
+ /**
2301
+ * Bob head movement (헤드밥)
2302
+ * @korean 헤드밥
2303
+ */
2304
+ bob(timeOffset = .08, easing = "ease-out") {
2305
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2306
+ kf.rotate(BoneName.KNEE_L, -.35, 0, 0);
2307
+ kf.rotate(BoneName.KNEE_R, -.35, 0, 0);
2308
+ kf.rotate(BoneName.SPINE_UPPER, .15, .2, 0);
2309
+ kf.rotate(BoneName.HEAD, .1, .1, 0);
2310
+ kf.position(BoneName.PELVIS, .05, -.08, 0);
2311
+ });
2312
+ this.currentTime += timeOffset;
2313
+ return this;
2314
+ }
2315
+ /**
2316
+ * Weave movement (위브)
2317
+ * @korean 위브
2318
+ */
2319
+ weave(timeOffset = .1, easing = "ease-out") {
2320
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2321
+ kf.rotate(BoneName.KNEE_L, -.25, 0, 0);
2322
+ kf.rotate(BoneName.KNEE_R, -.4, 0, 0);
2323
+ kf.rotate(BoneName.SPINE_UPPER, .1, -.25, 0);
2324
+ kf.rotate(BoneName.HEAD, .05, -.15, 0);
2325
+ kf.position(BoneName.PELVIS, -.05, -.05, 0);
2326
+ });
2327
+ this.currentTime += timeOffset;
2328
+ return this;
2329
+ }
2330
+ /**
2331
+ * Roundhouse kick extension (돌려차기)
2332
+ * @korean 돌려차기
2333
+ */
2334
+ roundhouse(timeOffset = .12, easing = "ease-out") {
2335
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2336
+ kf.rotate(BoneName.HIP_R, 1.2, 0, 1.6);
2337
+ kf.rotate(BoneName.KNEE_R, -.1, 0, 0);
2338
+ kf.rotate(BoneName.FOOT_R, .4, 0, .3);
2339
+ kf.rotate(BoneName.PELVIS, 0, -1.5, 0);
2340
+ kf.rotate(BoneName.SPINE_UPPER, 0, .8, 0);
2341
+ kf.position(BoneName.FOOT_R, .8, 0, 0);
2342
+ });
2343
+ this.currentTime += timeOffset;
2344
+ return this;
2345
+ }
2346
+ /**
2347
+ * Axe kick downward motion (내려차기)
2348
+ * @korean 내려차기
2349
+ */
2350
+ axeKick(timeOffset = .1, easing = "ease-in") {
2351
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2352
+ kf.rotate(BoneName.HIP_R, .8, 0, 0);
2353
+ kf.rotate(BoneName.KNEE_R, -.15, 0, 0);
2354
+ kf.rotate(BoneName.FOOT_R, -.3, 0, 0);
2355
+ kf.rotate(BoneName.PELVIS, .1, 0, 0);
2356
+ kf.position(BoneName.FOOT_R, 0, .5, .4);
2357
+ });
2358
+ this.currentTime += timeOffset;
2359
+ return this;
2360
+ }
2361
+ /**
2362
+ * Apply fighting guard - Hands protect face (경계자세)
2363
+ * @korean 경계자세
2364
+ */
2365
+ withGuard() {
2366
+ const lastKf = this.keyframes[this.keyframes.length - 1];
2367
+ if (lastKf) {
2368
+ applyMartialPoseToKeyframe(lastKf, MARTIAL_POSES.GUARD);
2369
+ this.applyHandPoseToKeyframe(lastKf, HAND_POSES.FIST, "both");
2370
+ }
2371
+ return this;
2372
+ }
2373
+ /**
2374
+ * Apply high guard - Hands at temple (상단방어)
2375
+ * @korean 상단방어
2376
+ */
2377
+ withHighGuard() {
2378
+ const lastKf = this.keyframes[this.keyframes.length - 1];
2379
+ if (lastKf) applyMartialPoseToKeyframe(lastKf, MARTIAL_POSES.HIGH_GUARD);
2380
+ return this;
2381
+ }
2382
+ /**
2383
+ * Apply Korean guard position helper
2384
+ *
2385
+ * Private helper method to reduce code duplication across guard methods.
2386
+ * Applies guard positions to the last keyframe in the animation.
2387
+ *
2388
+ * @param guardType - Type of guard to apply
2389
+ * @param side - Which side to apply ("left" | "right" | "both")
2390
+ * @returns this for chaining
2391
+ * @korean 한국방어자세적용헬퍼
2392
+ * @private
2393
+ */
2394
+ applyKoreanGuard(guardType, side = "both") {
2395
+ const lastKf = this.keyframes[this.keyframes.length - 1];
2396
+ if (lastKf) {
2397
+ const kf = new KeyframeConfig();
2398
+ kf.withGuard(guardType, side);
2399
+ for (const [bone, rotation] of kf.rotations.entries()) lastKf.boneRotations.set(bone, rotation);
2400
+ this.applyHandPoseToKeyframe(lastKf, HAND_POSES.FIST, side);
2401
+ }
2402
+ return this;
2403
+ }
2404
+ /**
2405
+ * Apply Korean high guard position (상단막기)
2406
+ *
2407
+ * Traditional Korean martial arts high guard with hands at temple level
2408
+ * protecting head and face. Uses authentic 막기자세 positioning.
2409
+ *
2410
+ * @param side - Which side to apply ("left" | "right" | "both")
2411
+ * @returns this for chaining
2412
+ * @korean 상단막기자세
2413
+ */
2414
+ withKoreanHighGuard(side = "both") {
2415
+ return this.applyKoreanGuard("HIGH_GUARD", side);
2416
+ }
2417
+ /**
2418
+ * Apply Korean middle guard position (중단막기)
2419
+ *
2420
+ * Standard Korean martial arts guard at chest/solar plexus level.
2421
+ * Most versatile guard position, used in most fighting stances.
2422
+ *
2423
+ * @param side - Which side to apply ("left" | "right" | "both")
2424
+ * @returns this for chaining
2425
+ * @korean 중단막기자세
2426
+ */
2427
+ withKoreanMiddleGuard(side = "both") {
2428
+ return this.applyKoreanGuard("MIDDLE_GUARD", side);
2429
+ }
2430
+ /**
2431
+ * Apply Korean low guard position (하단막기)
2432
+ *
2433
+ * Low guard position protecting lower body and groin.
2434
+ * Used in grappling and ground-fighting scenarios.
2435
+ *
2436
+ * @param side - Which side to apply ("left" | "right" | "both")
2437
+ * @returns this for chaining
2438
+ * @korean 하단막기자세
2439
+ */
2440
+ withKoreanLowGuard(side = "both") {
2441
+ return this.applyKoreanGuard("LOW_GUARD", side);
2442
+ }
2443
+ /**
2444
+ * Apply trigram-specific guard pose (팔괘자세)
2445
+ *
2446
+ * Sets the complete body position for the specified trigram stance,
2447
+ * including arms, legs, torso, and pelvis. Unlike generic guards,
2448
+ * this applies the authentic Korean martial arts posture for each
2449
+ * of the eight trigram stances.
2450
+ *
2451
+ * Use this for:
2452
+ * - Idle stance animations
2453
+ * - Returning to guard after techniques
2454
+ * - Walk/run animations (arms only mode)
2455
+ *
2456
+ * @param stance - Trigram stance (e.g., TrigramStance.GEON)
2457
+ * @param options - Application options (what body parts to apply)
2458
+ * @returns this for chaining
2459
+ *
2460
+ * @example
2461
+ * ```typescript
2462
+ * // Full guard pose in idle stance
2463
+ * builder.at(0).withTrigramGuard(TrigramStance.GEON);
2464
+ *
2465
+ * // Arms only for walk animation (legs handled separately)
2466
+ * builder.at(0).withTrigramGuard(TrigramStance.TAE, {
2467
+ * includeLegs: false,
2468
+ * includePelvis: false
2469
+ * });
2470
+ * ```
2471
+ *
2472
+ * @korean 팔괘방어자세
2473
+ */
2474
+ withTrigramGuard(stance, options) {
2475
+ const lastKf = this.keyframes[this.keyframes.length - 1];
2476
+ if (lastKf) {
2477
+ const kf = new KeyframeConfig();
2478
+ applyTrigramGuardToConfig(kf, stance, options);
2479
+ for (const [bone, rotation] of kf.rotations.entries()) lastKf.boneRotations.set(bone, rotation);
2480
+ this.applyHandPoseToKeyframe(lastKf, HAND_POSES.FIST, "both");
2481
+ }
2482
+ return this;
2483
+ }
2484
+ /**
2485
+ * Get trigram guard arm positions for locomotion animations
2486
+ *
2487
+ * Returns the base arm positions for the specified trigram's guard pose.
2488
+ * Use this when building walk/run animations that need to maintain
2489
+ * the trigram's arm guard while adding swing motion.
2490
+ *
2491
+ * @param stance - Trigram stance
2492
+ * @returns Left and right arm base rotations (shoulder, elbow)
2493
+ *
2494
+ * @example
2495
+ * ```typescript
2496
+ * const arms = builder.getTrigramArmGuard(TrigramStance.GEON);
2497
+ * // Add swing to left shoulder while keeping guard shape
2498
+ * kf.rotate(BoneName.SHOULDER_L,
2499
+ * arms.left.shoulder[0] + swingOffset,
2500
+ * arms.left.shoulder[1],
2501
+ * arms.left.shoulder[2]
2502
+ * );
2503
+ * ```
2504
+ *
2505
+ * @korean 팔괘팔자세가져오기
2506
+ */
2507
+ static getTrigramArmGuard(stance) {
2508
+ return getGuardArmBase(stance);
2509
+ }
2510
+ /**
2511
+ * Apply clinch position (클린치)
2512
+ * @korean 클린치
2513
+ */
2514
+ withClinch() {
2515
+ const lastKf = this.keyframes[this.keyframes.length - 1];
2516
+ if (lastKf) applyMartialPoseToKeyframe(lastKf, MARTIAL_POSES.CLINCH);
2517
+ return this;
2518
+ }
2519
+ /**
2520
+ * Helper to apply finger rotations from a hand pose to a keyframe
2521
+ * @internal
2522
+ */
2523
+ applyHandPose(kf, pose, hand) {
2524
+ applyHandPoseToConfig(kf, pose, hand);
2525
+ }
2526
+ /**
2527
+ * Apply open palm pose - Palm strikes and blocks (장권)
2528
+ * @param hand Which hand(s) to apply the pose to
2529
+ * @korean 손바닥펴기
2530
+ */
2531
+ withOpenPalm(hand = "both") {
2532
+ const lastKf = this.keyframes[this.keyframes.length - 1];
2533
+ if (lastKf) this.applyHandPoseToKeyframe(lastKf, HAND_POSES.OPEN_PALM, hand);
2534
+ return this;
2535
+ }
2536
+ /**
2537
+ * Apply spear hand pose - Finger strikes to throat/eyes (관수)
2538
+ * @param hand Which hand(s) to apply the pose to
2539
+ * @korean 관수펴기
2540
+ */
2541
+ withSpearHand(hand = "both") {
2542
+ const lastKf = this.keyframes[this.keyframes.length - 1];
2543
+ if (lastKf) this.applyHandPoseToKeyframe(lastKf, HAND_POSES.SPEAR_HAND, hand);
2544
+ return this;
2545
+ }
2546
+ /**
2547
+ * Apply backfist pose - Knuckle strikes (등주먹)
2548
+ * @param hand Which hand(s) to apply the pose to
2549
+ * @korean 등주먹
2550
+ */
2551
+ withBackfist(hand = "both") {
2552
+ const lastKf = this.keyframes[this.keyframes.length - 1];
2553
+ if (lastKf) this.applyHandPoseToKeyframe(lastKf, HAND_POSES.BACKFIST, hand);
2554
+ return this;
2555
+ }
2556
+ /**
2557
+ * Apply grab pose - Grappling and holds (잡기)
2558
+ * @param hand Which hand(s) to apply the pose to
2559
+ * @korean 잡기손
2560
+ */
2561
+ withGrab(hand = "both") {
2562
+ const lastKf = this.keyframes[this.keyframes.length - 1];
2563
+ if (lastKf) this.applyHandPoseToKeyframe(lastKf, HAND_POSES.GRAB, hand);
2564
+ return this;
2565
+ }
2566
+ /**
2567
+ * Helper to apply finger rotations from a hand pose to an existing keyframe
2568
+ * @internal
2569
+ */
2570
+ applyHandPoseToKeyframe(kf, pose, hand) {
2571
+ applyHandPoseToKeyframe(kf, pose, hand);
2572
+ }
2573
+ /**
2574
+ * Apply hand pose during a keyframe (inline version for addKeyframe)
2575
+ * @param pose The hand pose to apply
2576
+ * @param hand Which hand(s) to apply the pose to
2577
+ * @korean 손모양적용
2578
+ */
2579
+ applyHandPoseDuring(kf, pose, hand = "both") {
2580
+ this.applyHandPose(kf, HAND_POSES[pose], hand);
2581
+ }
2582
+ /**
2583
+ * Apply foot positions based on stance width (발너비)
2584
+ * Sets left and right foot X positions symmetrically around center
2585
+ *
2586
+ * @param stanceWidthMultiplier - Multiplier from KOREAN_STANCE_BIOMECHANICS
2587
+ * @param shoulderWidth - Fighter's shoulder width in centimeters
2588
+ * @korean 발너비적용
2589
+ *
2590
+ * @example
2591
+ * ```typescript
2592
+ * // Jin Thunder stance (2.0x shoulder width)
2593
+ * .withFootWidth(2.0, 46) // 0.92m total width
2594
+ *
2595
+ * // Son Wind stance (0.0x - crane stance)
2596
+ * .withFootWidth(0.0, 46) // 0m - single leg
2597
+ * ```
2598
+ */
2599
+ withFootWidth(stanceWidthMultiplier, shoulderWidth) {
2600
+ const lastKf = this.keyframes[this.keyframes.length - 1];
2601
+ const bonePositions = lastKf?.bonePositions;
2602
+ if (bonePositions) {
2603
+ const halfWidth = calculateStanceWidth(stanceWidthMultiplier, shoulderWidth) / 2;
2604
+ const newPositions = /* @__PURE__ */ new Map();
2605
+ bonePositions.forEach((pos, bone) => {
2606
+ newPositions.set(bone, pos);
2607
+ });
2608
+ newPositions.set(BoneName.FOOT_L, new THREE.Vector3(-halfWidth, 0, 0));
2609
+ newPositions.set(BoneName.FOOT_R, new THREE.Vector3(halfWidth, 0, 0));
2610
+ lastKf.bonePositions = newPositions;
2611
+ }
2612
+ return this;
2613
+ }
2614
+ /**
2615
+ * Apply foot positions to current keyframe during addKeyframe
2616
+ * Inline version for use within keyframe callback
2617
+ *
2618
+ * @param kf - KeyframeConfig to modify
2619
+ * @param stanceWidthMultiplier - Multiplier from KOREAN_STANCE_BIOMECHANICS
2620
+ * @param shoulderWidth - Fighter's shoulder width in centimeters
2621
+ * @korean 발너비설정
2622
+ */
2623
+ applyFootPositionsDuring(kf, stanceWidthMultiplier, shoulderWidth) {
2624
+ const halfWidth = calculateStanceWidth(stanceWidthMultiplier, shoulderWidth) / 2;
2625
+ kf.position(BoneName.FOOT_L, -halfWidth, 0, 0);
2626
+ kf.position(BoneName.FOOT_R, halfWidth, 0, 0);
2627
+ }
2628
+ /**
2629
+ * Recover to fighting guard (복귀)
2630
+ * Returns to neutral stance with torso reset
2631
+ * @korean 복귀
2632
+ */
2633
+ recover(timeOffset = .1, easing = "ease-in") {
2634
+ const guard = MARTIAL_POSES.GUARD;
2635
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2636
+ kf.rotate(BoneName.HIP_R, 0, 0, 0);
2637
+ kf.rotate(BoneName.KNEE_R, -.2, 0, 0);
2638
+ kf.rotate(BoneName.KNEE_L, -.2, 0, 0);
2639
+ kf.rotate(BoneName.FOOT_R, 0, 0, 0);
2640
+ kf.rotate(BoneName.FOOT_L, 0, 0, 0);
2641
+ kf.rotate(BoneName.PELVIS, 0, 0, 0);
2642
+ this.resetTorsoRotation(kf);
2643
+ kf.rotate(BoneName.SHOULDER_L, ...guard.leftShoulder);
2644
+ kf.rotate(BoneName.ELBOW_L, ...guard.leftElbow);
2645
+ kf.rotate(BoneName.SHOULDER_R, ...guard.rightShoulder);
2646
+ kf.rotate(BoneName.ELBOW_R, ...guard.rightElbow);
2647
+ kf.position(BoneName.PELVIS, 0, 0, 0);
2648
+ kf.position(BoneName.FOOT_R, 0, 0, 0);
2649
+ this.applyHandPose(kf, HAND_POSES.FIST, "both");
2650
+ });
2651
+ this.currentTime += timeOffset;
2652
+ return this;
2653
+ }
2654
+ /**
2655
+ * Full 360° spin recovery (회전복귀)
2656
+ * @korean 회전복귀
2657
+ */
2658
+ spinRecover(timeOffset = .2, easing = "ease-in") {
2659
+ const guard = MARTIAL_POSES.GUARD;
2660
+ this.addKeyframe(this.currentTime + timeOffset, easing, (kf) => {
2661
+ kf.rotate(BoneName.PELVIS, 0, -6.28, 0);
2662
+ kf.rotate(BoneName.SPINE_LOWER, 0, -6.28, 0);
2663
+ kf.rotate(BoneName.SPINE_UPPER, 0, -6.28, 0);
2664
+ kf.rotate(BoneName.HEAD, 0, 0, 0);
2665
+ kf.rotate(BoneName.HIP_R, 0, 0, 0);
2666
+ kf.rotate(BoneName.KNEE_R, -.2, 0, 0);
2667
+ kf.rotate(BoneName.KNEE_L, -.25, 0, 0);
2668
+ kf.rotate(BoneName.SHOULDER_L, ...guard.leftShoulder);
2669
+ kf.rotate(BoneName.ELBOW_L, ...guard.leftElbow);
2670
+ kf.rotate(BoneName.SHOULDER_R, ...guard.rightShoulder);
2671
+ kf.rotate(BoneName.ELBOW_R, ...guard.rightElbow);
2672
+ kf.position(BoneName.PELVIS, 0, -.05, 0);
2673
+ });
2674
+ this.currentTime += timeOffset;
2675
+ return this;
2676
+ }
2677
+ /**
2678
+ * Apply torso rotation for straight punch power generation (주먹허리비틀기)
2679
+ *
2680
+ * Korean martial arts principle: 허리비틀기 (Heori Biteulgi) - Waist twist for power
2681
+ * The torso rotates OPPOSITE to the punch direction, creating torque through
2682
+ * the spine that transfers power into the strike.
2683
+ *
2684
+ * Biomechanics:
2685
+ * - SPINE_LOWER rotates 50% of target angle (foundation rotation)
2686
+ * - SPINE_MIDDLE rotates 70% of target angle (power transfer zone)
2687
+ * - SPINE_UPPER rotates 100% of target angle (maximum rotation at shoulders)
2688
+ *
2689
+ * @param kf - KeyframeConfig to apply rotation to
2690
+ * @param side - Which hand is punching ("left" | "right")
2691
+ * @param rotationDegrees - Target rotation in degrees (15-25° recommended)
2692
+ *
2693
+ * @example
2694
+ * ```typescript
2695
+ * // Right cross with 20° counter-rotation
2696
+ * this.addKeyframe(0.35, "ease-out", (kf) => {
2697
+ * this.applyPunchTorsoRotation(kf, "right", 20);
2698
+ * // ... other punch mechanics
2699
+ * });
2700
+ * ```
2701
+ *
2702
+ * @korean 주먹허리비틀기
2703
+ */
2704
+ applyPunchTorsoRotation(kf, side, rotationDegrees) {
2705
+ const direction = side === "right" ? 1 : -1;
2706
+ const rotationRad = rotationDegrees * Math.PI / 180;
2707
+ const existingUpper = kf.rotations.get(BoneName.SPINE_UPPER);
2708
+ const existingMiddle = kf.rotations.get(BoneName.SPINE_MIDDLE);
2709
+ const existingLower = kf.rotations.get(BoneName.SPINE_LOWER);
2710
+ kf.rotate(BoneName.SPINE_LOWER, existingLower?.x ?? 0, (existingLower?.y ?? 0) + rotationRad * direction * .5, existingLower?.z ?? 0);
2711
+ kf.rotate(BoneName.SPINE_MIDDLE, existingMiddle?.x ?? 0, (existingMiddle?.y ?? 0) + rotationRad * direction * .7, existingMiddle?.z ?? 0);
2712
+ kf.rotate(BoneName.SPINE_UPPER, existingUpper?.x ?? 0, (existingUpper?.y ?? 0) + rotationRad * direction, existingUpper?.z ?? 0);
2713
+ }
2714
+ /**
2715
+ * Apply torso rotation for hook punch circular power (훅허리비틀기)
2716
+ *
2717
+ * Korean martial arts principle: 몸통회전 (Momtong Hoejeon) - Full torso rotation
2718
+ * Hook punches generate power from hip and shoulder rotation in a circular motion.
2719
+ * Larger rotation angle (45-60°) creates the circular arc needed for hooks.
2720
+ *
2721
+ * Biomechanics:
2722
+ * - SPINE_LOWER rotates 50% (hip engagement)
2723
+ * - SPINE_MIDDLE rotates 70% (core power transfer)
2724
+ * - SPINE_UPPER rotates 100% (shoulder whip into target)
2725
+ *
2726
+ * @param kf - KeyframeConfig to apply rotation to
2727
+ * @param side - Which hand is hooking ("left" | "right")
2728
+ * @param rotationDegrees - Target rotation in degrees (45-60° recommended)
2729
+ *
2730
+ * @example
2731
+ * ```typescript
2732
+ * // Right hook with 50° rotation
2733
+ * this.addKeyframe(0.30, "ease-out", (kf) => {
2734
+ * this.applyHookTorsoRotation(kf, "right", 50);
2735
+ * // ... other hook mechanics
2736
+ * });
2737
+ * ```
2738
+ *
2739
+ * @korean 훅허리비틀기
2740
+ */
2741
+ applyHookTorsoRotation(kf, side, rotationDegrees) {
2742
+ const direction = side === "right" ? -1 : 1;
2743
+ const rotationRad = rotationDegrees * Math.PI / 180;
2744
+ const existingLower = kf.rotations.get(BoneName.SPINE_LOWER);
2745
+ const existingMiddle = kf.rotations.get(BoneName.SPINE_MIDDLE);
2746
+ const existingUpper = kf.rotations.get(BoneName.SPINE_UPPER);
2747
+ kf.rotate(BoneName.SPINE_LOWER, existingLower?.x ?? 0, (existingLower?.y ?? 0) + rotationRad * direction * .5, existingLower?.z ?? 0);
2748
+ kf.rotate(BoneName.SPINE_MIDDLE, existingMiddle?.x ?? 0, (existingMiddle?.y ?? 0) + rotationRad * direction * .7, existingMiddle?.z ?? 0);
2749
+ kf.rotate(BoneName.SPINE_UPPER, existingUpper?.x ?? 0, (existingUpper?.y ?? 0) + rotationRad * direction, existingUpper?.z ?? 0);
2750
+ }
2751
+ /**
2752
+ * Apply torso lean for kick balance (차기허리기울이기)
2753
+ *
2754
+ * Korean martial arts principle: 중심축회전 (Jungsim Chuk Hoejeon) - Central axis rotation
2755
+ * When executing kicks, the torso leans AWAY from the kicking leg to:
2756
+ * 1. Maintain balance on the support leg
2757
+ * 2. Increase reach by extending the kick further
2758
+ * 3. Prevent falling backward during high kicks
2759
+ *
2760
+ * Biomechanics:
2761
+ * - SPINE_LOWER leans away from kick (foundation)
2762
+ * - SPINE_MIDDLE leans with lower spine (stability)
2763
+ * - SPINE_UPPER leans slightly less (control)
2764
+ *
2765
+ * @param kf - KeyframeConfig to apply lean to
2766
+ * @param side - Which leg is kicking ("left" | "right")
2767
+ * @param leanDegrees - Amount of lean in degrees (10-20° recommended)
2768
+ *
2769
+ * @example
2770
+ * ```typescript
2771
+ * // Right roundhouse kick with compensatory lean
2772
+ * this.addKeyframe(0.35, "ease-out", (kf) => {
2773
+ * this.applyKickTorsoLean(kf, "right", 15);
2774
+ * // ... other kick mechanics
2775
+ * });
2776
+ * ```
2777
+ *
2778
+ * @korean 차기허리기울이기
2779
+ */
2780
+ applyKickTorsoLean(kf, side, leanDegrees) {
2781
+ const direction = side === "right" ? -1 : 1;
2782
+ const leanRad = leanDegrees * Math.PI / 180;
2783
+ kf.rotate(BoneName.SPINE_LOWER, 0, 0, leanRad * direction * .9);
2784
+ kf.rotate(BoneName.SPINE_MIDDLE, 0, 0, leanRad * direction * .7);
2785
+ kf.rotate(BoneName.SPINE_UPPER, 0, 0, leanRad * direction * .5);
2786
+ }
2787
+ /**
2788
+ * Reset torso to neutral position (허리중립)
2789
+ *
2790
+ * Returns all spine bones to neutral rotation (0, 0, 0).
2791
+ * Used during recovery phases to return to fighting stance.
2792
+ *
2793
+ * @param kf - KeyframeConfig to reset
2794
+ *
2795
+ * @korean 허리중립
2796
+ */
2797
+ resetTorsoRotation(kf) {
2798
+ kf.rotate(BoneName.SPINE_LOWER, 0, 0, 0);
2799
+ kf.rotate(BoneName.SPINE_MIDDLE, 0, 0, 0);
2800
+ kf.rotate(BoneName.SPINE_UPPER, 0, 0, 0);
2801
+ }
2802
+ /**
2803
+ * Add custom keyframe with callback
2804
+ */
2805
+ addKeyframe(time, easing, configure) {
2806
+ const kf = new KeyframeConfig();
2807
+ configure(kf);
2808
+ this.keyframes.push({
2809
+ time,
2810
+ easing,
2811
+ boneRotations: kf.rotations,
2812
+ bonePositions: kf.positions
2813
+ });
2814
+ }
2815
+ /**
2816
+ * Add raw keyframe at specific time
2817
+ */
2818
+ at(time, easing = "linear") {
2819
+ const kf = new KeyframeConfig();
2820
+ kf.setBuilder(this, time, easing);
2821
+ return kf;
2822
+ }
2823
+ /**
2824
+ * Internal: Add keyframe from KeyframeConfig
2825
+ */
2826
+ _addKeyframe(kf) {
2827
+ this.keyframes.push(kf);
2828
+ }
2829
+ /**
2830
+ * Build the complete animation
2831
+ *
2832
+ * Automatically normalizes timing to ensure animations start at time 0.
2833
+ * This is important for animation system consistency and performance.
2834
+ */
2835
+ build() {
2836
+ let normalizedKeyframes = this.keyframes;
2837
+ if (this.keyframes.length > 0) {
2838
+ const firstTime = this.keyframes[0].time;
2839
+ if (firstTime !== 0) normalizedKeyframes = this.keyframes.map((kf) => ({
2840
+ ...kf,
2841
+ time: kf.time - firstTime
2842
+ }));
2843
+ }
2844
+ return {
2845
+ name: this.name,
2846
+ koreanName: this.koreanName,
2847
+ duration: this.duration,
2848
+ loop: this.loop,
2849
+ type: this.type,
2850
+ keyframes: normalizedKeyframes
2851
+ };
2852
+ }
2853
+ };
2854
+ //#endregion
2855
+ export { MartialArtsAnimationBuilder, TECHNIQUE_TIMING };
2856
+
2857
+ //# sourceMappingURL=MartialArtsAnimationBuilder.js.map