blacktrigram 0.7.43 → 0.7.45

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 (750) hide show
  1. package/lib/audio/AudioManager.d.ts +26 -0
  2. package/lib/audio/AudioManager.d.ts.map +1 -1
  3. package/lib/audio/AudioManager.js +26 -0
  4. package/lib/audio/AudioManager.js.map +1 -1
  5. package/lib/audio/AudioPool.js +3 -0
  6. package/lib/audio/AudioPool.js.map +1 -1
  7. package/lib/audio/index.d.ts.map +1 -1
  8. package/lib/audio/index.js.map +1 -1
  9. package/lib/audio/types.d.ts +18 -2
  10. package/lib/audio/types.d.ts.map +1 -1
  11. package/lib/audio/types.js +1 -0
  12. package/lib/audio/types.js.map +1 -1
  13. package/lib/components/effects/WindParticles3D.d.ts.map +1 -1
  14. package/lib/components/index.d.ts.map +1 -1
  15. package/lib/components/index.js.map +1 -1
  16. package/lib/components/screens/combat/CombatScreen3D.d.ts.map +1 -1
  17. package/lib/components/screens/combat/CombatScreen3D.js.map +1 -1
  18. package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts +0 -1
  19. package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts.map +1 -1
  20. package/lib/components/screens/combat/components/controls/KeyboardHints.js +0 -1
  21. package/lib/components/screens/combat/components/controls/KeyboardHints.js.map +1 -1
  22. package/lib/components/screens/combat/components/controls/PauseMenu.d.ts.map +1 -1
  23. package/lib/components/screens/combat/components/controls/PauseMenu.js.map +1 -1
  24. package/lib/components/screens/combat/components/effects/ArterialSpray3D.d.ts.map +1 -1
  25. package/lib/components/screens/combat/components/effects/BloodDecals3D.d.ts.map +1 -1
  26. package/lib/components/screens/combat/components/effects/BloodDecals3D.js.map +1 -1
  27. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.d.ts.map +1 -1
  28. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js.map +1 -1
  29. package/lib/components/screens/combat/components/effects/BloodParticles3D.d.ts.map +1 -1
  30. package/lib/components/screens/combat/components/effects/BloodParticles3D.js.map +1 -1
  31. package/lib/components/screens/combat/components/effects/BloodViscosity3D.d.ts.map +1 -1
  32. package/lib/components/screens/combat/components/effects/BloodViscosity3D.js.map +1 -1
  33. package/lib/components/screens/combat/components/effects/BoneCrackParticles3D.d.ts.map +1 -1
  34. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.d.ts.map +1 -1
  35. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js.map +1 -1
  36. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.d.ts.map +1 -1
  37. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js.map +1 -1
  38. package/lib/components/screens/combat/components/effects/DustClouds3D.d.ts.map +1 -1
  39. package/lib/components/screens/combat/components/effects/EarthCrackEffect3D.d.ts.map +1 -1
  40. package/lib/components/screens/combat/components/effects/EarthHealingEffect3D.d.ts.map +1 -1
  41. package/lib/components/screens/combat/components/effects/ImpactSparks3D.d.ts.map +1 -1
  42. package/lib/components/screens/combat/components/effects/InternalDamage3D.d.ts.map +1 -1
  43. package/lib/components/screens/combat/components/effects/InternalDamage3D.js.map +1 -1
  44. package/lib/components/screens/combat/components/effects/LiPrecisionTargetingOverlay.d.ts.map +1 -1
  45. package/lib/components/screens/combat/components/effects/NerveStrikeParticles3D.d.ts.map +1 -1
  46. package/lib/components/screens/combat/components/effects/PainVignette.d.ts.map +1 -1
  47. package/lib/components/screens/combat/components/effects/PainVignette.js.map +1 -1
  48. package/lib/components/screens/combat/components/effects/ParticleAudio3D.d.ts.map +1 -1
  49. package/lib/components/screens/combat/components/effects/ParticleAudio3D.js.map +1 -1
  50. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.d.ts.map +1 -1
  51. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js.map +1 -1
  52. package/lib/components/screens/combat/components/effects/WaterRipple3D.d.ts.map +1 -1
  53. package/lib/components/screens/combat/components/effects/WaterWave3D.d.ts.map +1 -1
  54. package/lib/components/screens/combat/components/effects/index.d.ts.map +1 -1
  55. package/lib/components/screens/combat/components/feedback/MatchCountdown.d.ts.map +1 -1
  56. package/lib/components/screens/combat/components/feedback/MatchCountdown.js.map +1 -1
  57. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.d.ts.map +1 -1
  58. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js.map +1 -1
  59. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.d.ts.map +1 -1
  60. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js.map +1 -1
  61. package/lib/components/screens/combat/components/hud/CombatBottomHUD.d.ts.map +1 -1
  62. package/lib/components/screens/combat/components/hud/CombatBottomHUD.js.map +1 -1
  63. package/lib/components/screens/combat/components/hud/CombatLeftHUD.d.ts.map +1 -1
  64. package/lib/components/screens/combat/components/hud/CombatLeftHUD.js.map +1 -1
  65. package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.d.ts.map +1 -1
  66. package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.js.map +1 -1
  67. package/lib/components/screens/combat/components/hud/CombatRightHUD.d.ts.map +1 -1
  68. package/lib/components/screens/combat/components/hud/CombatRightHUD.js.map +1 -1
  69. package/lib/components/screens/combat/components/hud/CombatTopHUD.d.ts.map +1 -1
  70. package/lib/components/screens/combat/components/hud/CombatTopHUD.js.map +1 -1
  71. package/lib/components/screens/combat/components/hud/DifficultyIndicator.d.ts.map +1 -1
  72. package/lib/components/screens/combat/components/hud/DifficultyIndicator.js.map +1 -1
  73. package/lib/components/screens/combat/components/hud/FPSMonitor.d.ts.map +1 -1
  74. package/lib/components/screens/combat/components/hud/FPSMonitor.js.map +1 -1
  75. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.d.ts.map +1 -1
  76. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js.map +1 -1
  77. package/lib/components/screens/combat/components/indicators/BalanceIndicator.d.ts.map +1 -1
  78. package/lib/components/screens/combat/components/indicators/BalanceIndicator.js.map +1 -1
  79. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts +0 -1
  80. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts.map +1 -1
  81. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js +0 -1
  82. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js.map +1 -1
  83. package/lib/components/screens/combat/components/indicators/StaminaWarning.d.ts.map +1 -1
  84. package/lib/components/screens/combat/components/indicators/StaminaWarning.js.map +1 -1
  85. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts +0 -2
  86. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts.map +1 -1
  87. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js +0 -1
  88. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js.map +1 -1
  89. package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts.map +1 -1
  90. package/lib/components/screens/combat/helpers/AnimationUpdater.js.map +1 -1
  91. package/lib/components/screens/combat/helpers/combatHelpers.d.ts.map +1 -1
  92. package/lib/components/screens/combat/helpers/combatHelpers.js.map +1 -1
  93. package/lib/components/screens/combat/hooks/useAICombat.d.ts.map +1 -1
  94. package/lib/components/screens/combat/hooks/useAICombat.js.map +1 -1
  95. package/lib/components/screens/combat/hooks/useCombatActions.d.ts.map +1 -1
  96. package/lib/components/screens/combat/hooks/useCombatActions.js.map +1 -1
  97. package/lib/components/screens/combat/hooks/useCombatAttackMovement.d.ts.map +1 -1
  98. package/lib/components/screens/combat/hooks/useCombatAttackMovement.js.map +1 -1
  99. package/lib/components/screens/combat/hooks/useCombatAudio.d.ts.map +1 -1
  100. package/lib/components/screens/combat/hooks/useCombatAudio.js.map +1 -1
  101. package/lib/components/screens/combat/hooks/useCombatLayout.d.ts.map +1 -1
  102. package/lib/components/screens/combat/hooks/useCombatLayout.js.map +1 -1
  103. package/lib/components/screens/combat/hooks/useCombatState.d.ts.map +1 -1
  104. package/lib/components/screens/combat/hooks/useCombatState.js.map +1 -1
  105. package/lib/components/screens/combat/hooks/useGrapplingAudio.d.ts.map +1 -1
  106. package/lib/components/screens/combat/hooks/usePreloadCombatAudio.d.ts.map +1 -1
  107. package/lib/components/screens/controls/ControlsScreen3D.d.ts.map +1 -1
  108. package/lib/components/screens/controls/ControlsScreen3D.js.map +1 -1
  109. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.d.ts.map +1 -1
  110. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js.map +1 -1
  111. package/lib/components/screens/controls/components/GamepadVisualization3D.d.ts.map +1 -1
  112. package/lib/components/screens/controls/components/GamepadVisualization3D.js.map +1 -1
  113. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.d.ts.map +1 -1
  114. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js.map +1 -1
  115. package/lib/components/screens/controls/components/Key3D.d.ts.map +1 -1
  116. package/lib/components/screens/controls/components/Key3D.js.map +1 -1
  117. package/lib/components/screens/controls/components/VisualKeyboard3D.d.ts.map +1 -1
  118. package/lib/components/screens/controls/components/VisualKeyboard3D.js.map +1 -1
  119. package/lib/components/screens/controls/constants/ControlsConstants.d.ts.map +1 -1
  120. package/lib/components/screens/controls/constants/ControlsConstants.js.map +1 -1
  121. package/lib/components/screens/controls/hooks/useControlsState.d.ts.map +1 -1
  122. package/lib/components/screens/controls/hooks/useControlsState.js.map +1 -1
  123. package/lib/components/screens/endscreen/EndScreen3D.d.ts.map +1 -1
  124. package/lib/components/screens/endscreen/EndScreen3D.js.map +1 -1
  125. package/lib/components/screens/endscreen/components/DefeatAnimation3D.d.ts.map +1 -1
  126. package/lib/components/screens/endscreen/components/DefeatAnimation3D.js.map +1 -1
  127. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.d.ts.map +1 -1
  128. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js.map +1 -1
  129. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.d.ts.map +1 -1
  130. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js.map +1 -1
  131. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.d.ts.map +1 -1
  132. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js.map +1 -1
  133. package/lib/components/screens/endscreen/components/VictoryAnimation3D.d.ts.map +1 -1
  134. package/lib/components/screens/endscreen/components/VictoryAnimation3D.js.map +1 -1
  135. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.d.ts.map +1 -1
  136. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js.map +1 -1
  137. package/lib/components/screens/endscreen/components/index.d.ts.map +1 -1
  138. package/lib/components/screens/endscreen/index.d.ts.map +1 -1
  139. package/lib/components/screens/intro/IntroScreen3D.d.ts.map +1 -1
  140. package/lib/components/screens/intro/IntroScreen3D.js +1 -1
  141. package/lib/components/screens/intro/IntroScreen3D.js.map +1 -1
  142. package/lib/components/screens/intro/components/AbilityListOverlayHtml.d.ts.map +1 -1
  143. package/lib/components/screens/intro/components/AbilityListOverlayHtml.js.map +1 -1
  144. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.d.ts.map +1 -1
  145. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js.map +1 -1
  146. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.d.ts.map +1 -1
  147. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js.map +1 -1
  148. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.d.ts.map +1 -1
  149. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js.map +1 -1
  150. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.d.ts.map +1 -1
  151. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js.map +1 -1
  152. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.d.ts.map +1 -1
  153. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js.map +1 -1
  154. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.d.ts.map +1 -1
  155. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js.map +1 -1
  156. package/lib/components/screens/intro/components/StatBarOverlayHtml.d.ts.map +1 -1
  157. package/lib/components/screens/intro/components/StatBarOverlayHtml.js.map +1 -1
  158. package/lib/components/screens/philosophy/PhilosophyScreen3D.d.ts.map +1 -1
  159. package/lib/components/screens/philosophy/PhilosophyScreen3D.js.map +1 -1
  160. package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts +0 -1
  161. package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts.map +1 -1
  162. package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts +0 -1
  163. package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts.map +1 -1
  164. package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts +0 -1
  165. package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts.map +1 -1
  166. package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts +0 -1
  167. package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts.map +1 -1
  168. package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts +0 -1
  169. package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts.map +1 -1
  170. package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts +0 -1
  171. package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts.map +1 -1
  172. package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts +0 -1
  173. package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts.map +1 -1
  174. package/lib/components/screens/training/TrainingScreen3D.d.ts.map +1 -1
  175. package/lib/components/screens/training/TrainingScreen3D.js.map +1 -1
  176. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.d.ts.map +1 -1
  177. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js.map +1 -1
  178. package/lib/components/screens/training/components/AnatomyOverlay3D.d.ts.map +1 -1
  179. package/lib/components/screens/training/components/AnatomyOverlay3D.js.map +1 -1
  180. package/lib/components/screens/training/components/DamageNumber3D.d.ts.map +1 -1
  181. package/lib/components/screens/training/components/FootPlacementMarkers3D.d.ts.map +1 -1
  182. package/lib/components/screens/training/components/FootPlacementMarkers3D.js.map +1 -1
  183. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.d.ts.map +1 -1
  184. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js.map +1 -1
  185. package/lib/components/screens/training/components/HitFeedbackEffect3D.d.ts.map +1 -1
  186. package/lib/components/screens/training/components/HitFeedbackEffect3D.js.map +1 -1
  187. package/lib/components/screens/training/components/TrainingAICharacter3D.d.ts.map +1 -1
  188. package/lib/components/screens/training/components/TrainingArena3D.d.ts.map +1 -1
  189. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.d.ts.map +1 -1
  190. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js.map +1 -1
  191. package/lib/components/screens/training/components/TrainingDummy3D.d.ts.map +1 -1
  192. package/lib/components/screens/training/components/TrainingDummy3D.js.map +1 -1
  193. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.d.ts.map +1 -1
  194. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js.map +1 -1
  195. package/lib/components/screens/training/components/TrainingHitEffects3D.d.ts.map +1 -1
  196. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.d.ts.map +1 -1
  197. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js.map +1 -1
  198. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.d.ts.map +1 -1
  199. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js.map +1 -1
  200. package/lib/components/screens/training/components/VitalPointMarker3D.d.ts.map +1 -1
  201. package/lib/components/screens/training/components/VitalPointMarker3D.js.map +1 -1
  202. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.d.ts.map +1 -1
  203. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js.map +1 -1
  204. package/lib/components/screens/training/components/hud/TrainingBottomHUD.d.ts.map +1 -1
  205. package/lib/components/screens/training/components/hud/TrainingBottomHUD.js.map +1 -1
  206. package/lib/components/screens/training/components/hud/TrainingLeftHUD.d.ts.map +1 -1
  207. package/lib/components/screens/training/components/hud/TrainingLeftHUD.js.map +1 -1
  208. package/lib/components/screens/training/components/hud/TrainingRightHUD.d.ts.map +1 -1
  209. package/lib/components/screens/training/components/hud/TrainingRightHUD.js.map +1 -1
  210. package/lib/components/screens/training/components/hud/TrainingTopHUD.d.ts.map +1 -1
  211. package/lib/components/screens/training/components/hud/TrainingTopHUD.js.map +1 -1
  212. package/lib/components/screens/training/components/index.d.ts.map +1 -1
  213. package/lib/components/screens/training/hooks/useAttackMovement.d.ts.map +1 -1
  214. package/lib/components/screens/training/hooks/useAttackMovement.js.map +1 -1
  215. package/lib/components/screens/training/hooks/useTrainingActions.d.ts.map +1 -1
  216. package/lib/components/screens/training/hooks/useTrainingActions.js.map +1 -1
  217. package/lib/components/screens/training/hooks/useTrainingLayout.d.ts.map +1 -1
  218. package/lib/components/screens/training/hooks/useTrainingLayout.js.map +1 -1
  219. package/lib/components/screens/training/hooks/useTrainingState.d.ts.map +1 -1
  220. package/lib/components/screens/training/hooks/useTrainingState.js.map +1 -1
  221. package/lib/components/shared/base/AccessibilityProvider.d.ts.map +1 -1
  222. package/lib/components/shared/base/BaseButton.d.ts.map +1 -1
  223. package/lib/components/shared/base/BaseButton.js.map +1 -1
  224. package/lib/components/shared/base/BaseButtonOverlayHtml.d.ts.map +1 -1
  225. package/lib/components/shared/base/BaseButtonOverlayHtml.js.map +1 -1
  226. package/lib/components/shared/base/BasePanel.d.ts.map +1 -1
  227. package/lib/components/shared/base/BasePanel.js.map +1 -1
  228. package/lib/components/shared/base/BaseText.d.ts.map +1 -1
  229. package/lib/components/shared/base/BaseText.js.map +1 -1
  230. package/lib/components/shared/base/ResponsiveContainer.d.ts.map +1 -1
  231. package/lib/components/shared/base/index.d.ts.map +1 -1
  232. package/lib/components/shared/base/useKoreanTheme.d.ts.map +1 -1
  233. package/lib/components/shared/base/useKoreanTheme.js.map +1 -1
  234. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.d.ts.map +1 -1
  235. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js.map +1 -1
  236. package/lib/components/shared/effects/ScreenFlash.d.ts.map +1 -1
  237. package/lib/components/shared/mobile/ActionButtons.d.ts.map +1 -1
  238. package/lib/components/shared/mobile/ActionButtons.js +0 -1
  239. package/lib/components/shared/mobile/ActionButtons.js.map +1 -1
  240. package/lib/components/shared/mobile/GestureRecognizerPure.d.ts +0 -1
  241. package/lib/components/shared/mobile/GestureRecognizerPure.d.ts.map +1 -1
  242. package/lib/components/shared/mobile/GestureRecognizerPure.js +0 -1
  243. package/lib/components/shared/mobile/GestureRecognizerPure.js.map +1 -1
  244. package/lib/components/shared/mobile/HapticController.d.ts +0 -13
  245. package/lib/components/shared/mobile/HapticController.d.ts.map +1 -1
  246. package/lib/components/shared/mobile/HapticController.js +0 -10
  247. package/lib/components/shared/mobile/HapticController.js.map +1 -1
  248. package/lib/components/shared/mobile/MobileControlsPure.d.ts.map +1 -1
  249. package/lib/components/shared/mobile/MobileControlsPure.js.map +1 -1
  250. package/lib/components/shared/mobile/PerformanceMonitor.d.ts +0 -15
  251. package/lib/components/shared/mobile/PerformanceMonitor.d.ts.map +1 -1
  252. package/lib/components/shared/mobile/StanceWheelPure.d.ts +0 -1
  253. package/lib/components/shared/mobile/StanceWheelPure.d.ts.map +1 -1
  254. package/lib/components/shared/mobile/StanceWheelPure.js +0 -1
  255. package/lib/components/shared/mobile/StanceWheelPure.js.map +1 -1
  256. package/lib/components/shared/mobile/TouchOptimizer.d.ts +0 -4
  257. package/lib/components/shared/mobile/TouchOptimizer.d.ts.map +1 -1
  258. package/lib/components/shared/mobile/TouchOptimizer.js +0 -3
  259. package/lib/components/shared/mobile/TouchOptimizer.js.map +1 -1
  260. package/lib/components/shared/mobile/VirtualDPad.d.ts.map +1 -1
  261. package/lib/components/shared/mobile/VirtualDPad.js +0 -1
  262. package/lib/components/shared/mobile/VirtualDPad.js.map +1 -1
  263. package/lib/components/shared/mobile/index.d.ts.map +1 -1
  264. package/lib/components/shared/three/anatomy/BodySurface.d.ts.map +1 -1
  265. package/lib/components/shared/three/anatomy/BodySurface.js.map +1 -1
  266. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.d.ts.map +1 -1
  267. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js.map +1 -1
  268. package/lib/components/shared/three/anatomy/BoneClothing.d.ts.map +1 -1
  269. package/lib/components/shared/three/anatomy/BoneClothing.js.map +1 -1
  270. package/lib/components/shared/three/anatomy/BoneRenderer.d.ts +0 -1
  271. package/lib/components/shared/three/anatomy/BoneRenderer.d.ts.map +1 -1
  272. package/lib/components/shared/three/anatomy/BoneRenderer.js.map +1 -1
  273. package/lib/components/shared/three/anatomy/Face3D.d.ts.map +1 -1
  274. package/lib/components/shared/three/anatomy/Face3D.js.map +1 -1
  275. package/lib/components/shared/three/anatomy/Foot3D.d.ts +0 -1
  276. package/lib/components/shared/three/anatomy/Foot3D.d.ts.map +1 -1
  277. package/lib/components/shared/three/anatomy/Foot3D.js.map +1 -1
  278. package/lib/components/shared/three/anatomy/Hand3D.d.ts +0 -1
  279. package/lib/components/shared/three/anatomy/Hand3D.d.ts.map +1 -1
  280. package/lib/components/shared/three/anatomy/Hand3D.js.map +1 -1
  281. package/lib/components/shared/three/effects/ActionFeedback.d.ts.map +1 -1
  282. package/lib/components/shared/three/effects/ActionFeedback.js.map +1 -1
  283. package/lib/components/shared/three/effects/DamageNumbers.d.ts.map +1 -1
  284. package/lib/components/shared/three/effects/DamageNumbers.js.map +1 -1
  285. package/lib/components/shared/three/effects/ExplosiveBurstEffect3D.d.ts.map +1 -1
  286. package/lib/components/shared/three/effects/GrapplingIndicator3D.d.ts.map +1 -1
  287. package/lib/components/shared/three/effects/HitEffects3D.d.ts.map +1 -1
  288. package/lib/components/shared/three/effects/HitEffects3D.js.map +1 -1
  289. package/lib/components/shared/three/effects/LimbExposureIndicator3D.d.ts.map +1 -1
  290. package/lib/components/shared/three/effects/NerveDisruptionEffect3D.d.ts.map +1 -1
  291. package/lib/components/shared/three/effects/PlayerStateIndicators.d.ts.map +1 -1
  292. package/lib/components/shared/three/effects/PlayerStateIndicators.js.map +1 -1
  293. package/lib/components/shared/three/effects/StanceSymbol3D.d.ts.map +1 -1
  294. package/lib/components/shared/three/effects/StanceSymbol3D.js.map +1 -1
  295. package/lib/components/shared/three/effects/StanceTransitionEffect.d.ts.map +1 -1
  296. package/lib/components/shared/three/effects/StanceTransitionEffect.js.map +1 -1
  297. package/lib/components/shared/three/effects/ThunderEffect3D.d.ts.map +1 -1
  298. package/lib/components/shared/three/effects/VitalPointMarkers3D.d.ts.map +1 -1
  299. package/lib/components/shared/three/effects/VitalPointMarkers3D.js.map +1 -1
  300. package/lib/components/shared/three/index.d.ts.map +1 -1
  301. package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts +0 -6
  302. package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts.map +1 -1
  303. package/lib/components/shared/three/indicators/ElementalColorSystem.js +0 -4
  304. package/lib/components/shared/three/indicators/ElementalColorSystem.js.map +1 -1
  305. package/lib/components/shared/three/indicators/GuardIndicator.d.ts +0 -1
  306. package/lib/components/shared/three/indicators/GuardIndicator.d.ts.map +1 -1
  307. package/lib/components/shared/three/indicators/GuardIndicator.js +0 -1
  308. package/lib/components/shared/three/indicators/GuardIndicator.js.map +1 -1
  309. package/lib/components/shared/three/indicators/HapticFeedback.d.ts +0 -7
  310. package/lib/components/shared/three/indicators/HapticFeedback.d.ts.map +1 -1
  311. package/lib/components/shared/three/indicators/HapticFeedback.js +0 -2
  312. package/lib/components/shared/three/indicators/HapticFeedback.js.map +1 -1
  313. package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts +0 -1
  314. package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts.map +1 -1
  315. package/lib/components/shared/three/indicators/StanceChangeIndicator.js +0 -1
  316. package/lib/components/shared/three/indicators/StanceChangeIndicator.js.map +1 -1
  317. package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts +0 -1
  318. package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts.map +1 -1
  319. package/lib/components/shared/three/models/Player3DWithTransitions.d.ts.map +1 -1
  320. package/lib/components/shared/three/models/Player3DWithTransitions.js.map +1 -1
  321. package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts.map +1 -1
  322. package/lib/components/shared/three/models/SkeletalPlayer3D.js.map +1 -1
  323. package/lib/components/shared/three/optimization/AdaptiveQuality.d.ts.map +1 -1
  324. package/lib/components/shared/three/optimization/AdaptiveQuality.js.map +1 -1
  325. package/lib/components/shared/three/optimization/InstancedGeometry.d.ts.map +1 -1
  326. package/lib/components/shared/three/optimization/LODSystem.d.ts.map +1 -1
  327. package/lib/components/shared/three/scene/AtmosphericParticles3D.d.ts.map +1 -1
  328. package/lib/components/shared/three/scene/AtmosphericParticles3D.js.map +1 -1
  329. package/lib/components/shared/three/scene/BackgroundScene3D.d.ts.map +1 -1
  330. package/lib/components/shared/three/scene/BackgroundScene3D.js.map +1 -1
  331. package/lib/components/shared/three/scene/CombatArena3D.d.ts.map +1 -1
  332. package/lib/components/shared/three/scene/CombatArena3D.js.map +1 -1
  333. package/lib/components/shared/three/scene/DebugCollision.d.ts +0 -2
  334. package/lib/components/shared/three/scene/DebugCollision.d.ts.map +1 -1
  335. package/lib/components/shared/three/scene/KoreanSignage3D.d.ts.map +1 -1
  336. package/lib/components/shared/three/scene/KoreanSignage3D.js.map +1 -1
  337. package/lib/components/shared/three/ui/ArchetypeCard.d.ts.map +1 -1
  338. package/lib/components/shared/three/ui/ArchetypeCard.js.map +1 -1
  339. package/lib/components/shared/three/ui/BodyPartHealthDisplay.d.ts.map +1 -1
  340. package/lib/components/shared/three/ui/BodyPartHealthDisplay.js.map +1 -1
  341. package/lib/components/shared/three/ui/BreathingIndicator.d.ts.map +1 -1
  342. package/lib/components/shared/three/ui/BreathingIndicator2.js.map +1 -1
  343. package/lib/components/shared/three/ui/CombatReadinessBar.d.ts.map +1 -1
  344. package/lib/components/shared/three/ui/CombatReadinessBar.js.map +1 -1
  345. package/lib/components/shared/three/ui/ComboCounter.d.ts.map +1 -1
  346. package/lib/components/shared/three/ui/ComboCounter.js.map +1 -1
  347. package/lib/components/shared/three/ui/HealthBar.d.ts.map +1 -1
  348. package/lib/components/shared/three/ui/HealthBar.js.map +1 -1
  349. package/lib/components/shared/three/ui/KoreanButton.d.ts.map +1 -1
  350. package/lib/components/shared/three/ui/KoreanButton.js.map +1 -1
  351. package/lib/components/shared/three/ui/KoreanPanel.d.ts.map +1 -1
  352. package/lib/components/shared/three/ui/KoreanPanel.js.map +1 -1
  353. package/lib/components/shared/three/ui/KoreanText.d.ts.map +1 -1
  354. package/lib/components/shared/three/ui/KoreanText.js.map +1 -1
  355. package/lib/components/shared/three/ui/MenuList.d.ts.map +1 -1
  356. package/lib/components/shared/three/ui/MenuList.js.map +1 -1
  357. package/lib/components/shared/three/ui/PlayerHUD.d.ts.map +1 -1
  358. package/lib/components/shared/three/ui/PlayerHUD.js.map +1 -1
  359. package/lib/components/shared/three/ui/ProgressBar.d.ts.map +1 -1
  360. package/lib/components/shared/three/ui/ProgressBar.js.map +1 -1
  361. package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts +0 -1
  362. package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts.map +1 -1
  363. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js +0 -1
  364. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js.map +1 -1
  365. package/lib/components/shared/three/ui/StaminaBar.d.ts.map +1 -1
  366. package/lib/components/shared/three/ui/StaminaBar.js.map +1 -1
  367. package/lib/components/shared/three/ui/TechniqueBar.d.ts.map +1 -1
  368. package/lib/components/shared/three/ui/TechniqueBar.js.map +1 -1
  369. package/lib/components/shared/three/ui/TechniqueBarContainer.d.ts.map +1 -1
  370. package/lib/components/shared/three/ui/TechniqueCard.d.ts.map +1 -1
  371. package/lib/components/shared/three/ui/TechniqueCard.js.map +1 -1
  372. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.d.ts.map +1 -1
  373. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js.map +1 -1
  374. package/lib/components/shared/three/ui/VulnerabilityWindowHUD.d.ts.map +1 -1
  375. package/lib/components/shared/ui/BaseHUDContainer.d.ts.map +1 -1
  376. package/lib/components/shared/ui/BaseHUDContainer.js.map +1 -1
  377. package/lib/components/shared/ui/CombatTimer.d.ts.map +1 -1
  378. package/lib/components/shared/ui/CombatTimer.js.map +1 -1
  379. package/lib/components/shared/ui/ErrorBoundary.d.ts.map +1 -1
  380. package/lib/components/shared/ui/ErrorModal.d.ts.map +1 -1
  381. package/lib/components/shared/ui/ErrorModal.js.map +1 -1
  382. package/lib/components/shared/ui/HUDSection.d.ts.map +1 -1
  383. package/lib/components/shared/ui/LoadingState.d.ts.map +1 -1
  384. package/lib/components/shared/ui/LoadingState.js.map +1 -1
  385. package/lib/components/shared/ui/MobileHUDLayout.d.ts +0 -1
  386. package/lib/components/shared/ui/MobileHUDLayout.d.ts.map +1 -1
  387. package/lib/components/shared/ui/ResponsiveContainer.d.ts +0 -1
  388. package/lib/components/shared/ui/ResponsiveContainer.d.ts.map +1 -1
  389. package/lib/components/shared/ui/SplashScreen.d.ts.map +1 -1
  390. package/lib/components/shared/ui/SplashScreen.js +2 -2
  391. package/lib/components/shared/ui/SplashScreen.js.map +1 -1
  392. package/lib/components/shared/ui/StyledHUDPanel.d.ts.map +1 -1
  393. package/lib/components/shared/ui/VitalPointOverlayControlsPure.d.ts.map +1 -1
  394. package/lib/components/shared/ui/VitalPointOverlayControlsPure.js.map +1 -1
  395. package/lib/components/shared/ui/VolumeControl.d.ts.map +1 -1
  396. package/lib/components/shared/ui/VolumeControl.js.map +1 -1
  397. package/lib/components/shared/ui/shared/ConfirmDialog.d.ts.map +1 -1
  398. package/lib/components/shared/ui/shared/ConfirmDialog.js.map +1 -1
  399. package/lib/components/test/Hello3D.d.ts.map +1 -1
  400. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.d.ts.map +1 -1
  401. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js.map +1 -1
  402. package/lib/components/ui/combat/ComboCounter.d.ts.map +1 -1
  403. package/lib/components/ui/combat/PressureMeter.d.ts.map +1 -1
  404. package/lib/systems/CombatSystem.d.ts +0 -6
  405. package/lib/systems/CombatSystem.d.ts.map +1 -1
  406. package/lib/systems/CombatSystem.js +0 -6
  407. package/lib/systems/CombatSystem.js.map +1 -1
  408. package/lib/systems/EffectCalculator.d.ts +0 -7
  409. package/lib/systems/EffectCalculator.d.ts.map +1 -1
  410. package/lib/systems/EffectCalculator.js +0 -4
  411. package/lib/systems/EffectCalculator.js.map +1 -1
  412. package/lib/systems/LayoutSystem.d.ts +0 -1
  413. package/lib/systems/LayoutSystem.d.ts.map +1 -1
  414. package/lib/systems/LayoutSystem.js +0 -1
  415. package/lib/systems/LayoutSystem.js.map +1 -1
  416. package/lib/systems/PlayerEffectManager.d.ts +0 -10
  417. package/lib/systems/PlayerEffectManager.d.ts.map +1 -1
  418. package/lib/systems/PlayerEffectManager.js +0 -3
  419. package/lib/systems/PlayerEffectManager.js.map +1 -1
  420. package/lib/systems/ResponsiveScaling.d.ts +0 -12
  421. package/lib/systems/ResponsiveScaling.d.ts.map +1 -1
  422. package/lib/systems/ResponsiveScaling.js +0 -12
  423. package/lib/systems/ResponsiveScaling.js.map +1 -1
  424. package/lib/systems/TrigramSystem.d.ts +0 -13
  425. package/lib/systems/TrigramSystem.d.ts.map +1 -1
  426. package/lib/systems/TrigramSystem.js +0 -13
  427. package/lib/systems/TrigramSystem.js.map +1 -1
  428. package/lib/systems/VitalPointSystem.d.ts +0 -10
  429. package/lib/systems/VitalPointSystem.d.ts.map +1 -1
  430. package/lib/systems/VitalPointSystem.js +0 -10
  431. package/lib/systems/VitalPointSystem.js.map +1 -1
  432. package/lib/systems/animation/builders/KeyframeInterpolation.d.ts +0 -4
  433. package/lib/systems/animation/builders/KeyframeInterpolation.d.ts.map +1 -1
  434. package/lib/systems/animation/builders/KeyframeInterpolation.js +0 -1
  435. package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -1
  436. package/lib/systems/animation/builders/SkeletonRig.d.ts +0 -4
  437. package/lib/systems/animation/builders/SkeletonRig.d.ts.map +1 -1
  438. package/lib/systems/animation/builders/SkeletonRig.js +0 -3
  439. package/lib/systems/animation/builders/SkeletonRig.js.map +1 -1
  440. package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts +0 -5
  441. package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts.map +1 -1
  442. package/lib/systems/animation/catalogs/RecoveryAnimations.js +0 -5
  443. package/lib/systems/animation/catalogs/RecoveryAnimations.js.map +1 -1
  444. package/lib/systems/animation/core/AnimationHitTiming.d.ts +0 -6
  445. package/lib/systems/animation/core/AnimationHitTiming.d.ts.map +1 -1
  446. package/lib/systems/animation/core/AnimationHitTiming.js +0 -4
  447. package/lib/systems/animation/core/AnimationHitTiming.js.map +1 -1
  448. package/lib/systems/animation/core/AnimationStateMachine.js +1 -0
  449. package/lib/systems/animation/core/AnimationStateMachine.js.map +1 -1
  450. package/lib/systems/animation/core/AnimationTransitions.d.ts +0 -3
  451. package/lib/systems/animation/core/AnimationTransitions.d.ts.map +1 -1
  452. package/lib/systems/animation/core/AnimationTransitions.js.map +1 -1
  453. package/lib/systems/animation/core/LateralityTransform.d.ts +0 -3
  454. package/lib/systems/animation/core/LateralityTransform.d.ts.map +1 -1
  455. package/lib/systems/animation/core/LateralityTransform.js +0 -1
  456. package/lib/systems/animation/core/LateralityTransform.js.map +1 -1
  457. package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts +0 -1
  458. package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts.map +1 -1
  459. package/lib/systems/animation/core/RecoveryPhaseEnhancer.js.map +1 -1
  460. package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts +0 -10
  461. package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts.map +1 -1
  462. package/lib/systems/animation/core/TechniqueAnimationMapper.js +0 -8
  463. package/lib/systems/animation/core/TechniqueAnimationMapper.js.map +1 -1
  464. package/lib/systems/animation/core/TrigramAnimationMapping.d.ts +0 -10
  465. package/lib/systems/animation/core/TrigramAnimationMapping.d.ts.map +1 -1
  466. package/lib/systems/animation/core/TrigramStanceTransitions.d.ts +0 -2
  467. package/lib/systems/animation/core/TrigramStanceTransitions.d.ts.map +1 -1
  468. package/lib/systems/animation/core/types.d.ts +0 -39
  469. package/lib/systems/animation/core/types.d.ts.map +1 -1
  470. package/lib/systems/animation/core/types.js +0 -9
  471. package/lib/systems/animation/core/types.js.map +1 -1
  472. package/lib/systems/animation/systems/AdvancedJointMovements.d.ts +0 -27
  473. package/lib/systems/animation/systems/AdvancedJointMovements.d.ts.map +1 -1
  474. package/lib/systems/animation/systems/AdvancedJointMovements.js +0 -1
  475. package/lib/systems/animation/systems/AdvancedJointMovements.js.map +1 -1
  476. package/lib/systems/animation/systems/BodyFacingSystem.d.ts +0 -19
  477. package/lib/systems/animation/systems/BodyFacingSystem.d.ts.map +1 -1
  478. package/lib/systems/animation/systems/BodyFacingSystem.js +0 -14
  479. package/lib/systems/animation/systems/BodyFacingSystem.js.map +1 -1
  480. package/lib/systems/animation/systems/FacialExpressions.d.ts +0 -10
  481. package/lib/systems/animation/systems/FacialExpressions.d.ts.map +1 -1
  482. package/lib/systems/animation/systems/FacialExpressions.js +0 -2
  483. package/lib/systems/animation/systems/FacialExpressions.js.map +1 -1
  484. package/lib/systems/animation/systems/FallAnimations.d.ts +0 -4
  485. package/lib/systems/animation/systems/FallAnimations.d.ts.map +1 -1
  486. package/lib/systems/animation/systems/FallAnimations.js +0 -2
  487. package/lib/systems/animation/systems/FallAnimations.js.map +1 -1
  488. package/lib/systems/animation/systems/HeadMovements.d.ts +0 -10
  489. package/lib/systems/animation/systems/HeadMovements.d.ts.map +1 -1
  490. package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts +0 -7
  491. package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts.map +1 -1
  492. package/lib/systems/bodypart/BodyPartDamageIntegration.js +0 -7
  493. package/lib/systems/bodypart/BodyPartDamageIntegration.js.map +1 -1
  494. package/lib/systems/bodypart/BodyPartHealthSystem.d.ts +0 -13
  495. package/lib/systems/bodypart/BodyPartHealthSystem.d.ts.map +1 -1
  496. package/lib/systems/bodypart/BodyPartHealthSystem.js +0 -13
  497. package/lib/systems/bodypart/BodyPartHealthSystem.js.map +1 -1
  498. package/lib/systems/bodypart/BodyPartPositionMapping.d.ts +0 -6
  499. package/lib/systems/bodypart/BodyPartPositionMapping.d.ts.map +1 -1
  500. package/lib/systems/bodypart/BodyPartPositionMapping.js +0 -6
  501. package/lib/systems/bodypart/BodyPartPositionMapping.js.map +1 -1
  502. package/lib/systems/bodypart/CombatInjuryIntegration.d.ts +0 -10
  503. package/lib/systems/bodypart/CombatInjuryIntegration.d.ts.map +1 -1
  504. package/lib/systems/bodypart/CombatInjuryIntegration.js +0 -8
  505. package/lib/systems/bodypart/CombatInjuryIntegration.js.map +1 -1
  506. package/lib/systems/bodypart/InjuryIntegration.d.ts +0 -2
  507. package/lib/systems/bodypart/InjuryIntegration.d.ts.map +1 -1
  508. package/lib/systems/bodypart/InjuryIntegration.js +0 -2
  509. package/lib/systems/bodypart/InjuryIntegration.js.map +1 -1
  510. package/lib/systems/bodypart/InjuryTracker.d.ts +0 -14
  511. package/lib/systems/bodypart/InjuryTracker.d.ts.map +1 -1
  512. package/lib/systems/bodypart/InjuryTracker.js +0 -12
  513. package/lib/systems/bodypart/InjuryTracker.js.map +1 -1
  514. package/lib/systems/bodypart/MovementPenaltySystem.d.ts +0 -8
  515. package/lib/systems/bodypart/MovementPenaltySystem.d.ts.map +1 -1
  516. package/lib/systems/bodypart/MovementPenaltySystem.js +0 -8
  517. package/lib/systems/bodypart/MovementPenaltySystem.js.map +1 -1
  518. package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts +0 -8
  519. package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts.map +1 -1
  520. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js +0 -8
  521. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js.map +1 -1
  522. package/lib/systems/bodypart/types.d.ts +0 -13
  523. package/lib/systems/bodypart/types.d.ts.map +1 -1
  524. package/lib/systems/bodypart/types.js +0 -5
  525. package/lib/systems/bodypart/types.js.map +1 -1
  526. package/lib/systems/breathing/BreathingDisruptionSystem.d.ts +0 -3
  527. package/lib/systems/breathing/BreathingDisruptionSystem.d.ts.map +1 -1
  528. package/lib/systems/breathing/BreathingDisruptionSystem.js +0 -2
  529. package/lib/systems/breathing/BreathingDisruptionSystem.js.map +1 -1
  530. package/lib/systems/combat/BalanceSystem.d.ts +0 -25
  531. package/lib/systems/combat/BalanceSystem.d.ts.map +1 -1
  532. package/lib/systems/combat/BalanceSystem.js +0 -25
  533. package/lib/systems/combat/BalanceSystem.js.map +1 -1
  534. package/lib/systems/combat/BreakingStatusEffects.d.ts +0 -4
  535. package/lib/systems/combat/BreakingStatusEffects.d.ts.map +1 -1
  536. package/lib/systems/combat/BreakingStatusEffects.js +0 -3
  537. package/lib/systems/combat/BreakingStatusEffects.js.map +1 -1
  538. package/lib/systems/combat/CombatStateSystem.d.ts +0 -9
  539. package/lib/systems/combat/CombatStateSystem.d.ts.map +1 -1
  540. package/lib/systems/combat/CombatStateSystem.js +0 -9
  541. package/lib/systems/combat/CombatStateSystem.js.map +1 -1
  542. package/lib/systems/combat/ConsciousnessSystem.d.ts +0 -16
  543. package/lib/systems/combat/ConsciousnessSystem.d.ts.map +1 -1
  544. package/lib/systems/combat/ConsciousnessSystem.js +0 -16
  545. package/lib/systems/combat/ConsciousnessSystem.js.map +1 -1
  546. package/lib/systems/combat/FallIntegration.d.ts +0 -3
  547. package/lib/systems/combat/FallIntegration.d.ts.map +1 -1
  548. package/lib/systems/combat/FallIntegration.js +0 -3
  549. package/lib/systems/combat/FallIntegration.js.map +1 -1
  550. package/lib/systems/combat/GrappleSystem.d.ts +0 -2
  551. package/lib/systems/combat/GrappleSystem.d.ts.map +1 -1
  552. package/lib/systems/combat/GrappleSystem.js +0 -2
  553. package/lib/systems/combat/GrappleSystem.js.map +1 -1
  554. package/lib/systems/combat/LimbExposureSystem.d.ts +0 -7
  555. package/lib/systems/combat/LimbExposureSystem.d.ts.map +1 -1
  556. package/lib/systems/combat/LimbExposureSystem.js +0 -7
  557. package/lib/systems/combat/LimbExposureSystem.js.map +1 -1
  558. package/lib/systems/combat/PainResponseSystem.d.ts +0 -11
  559. package/lib/systems/combat/PainResponseSystem.d.ts.map +1 -1
  560. package/lib/systems/combat/PainResponseSystem.js +0 -11
  561. package/lib/systems/combat/PainResponseSystem.js.map +1 -1
  562. package/lib/systems/combat/painConsciousnessUtils.d.ts +0 -7
  563. package/lib/systems/combat/painConsciousnessUtils.d.ts.map +1 -1
  564. package/lib/systems/combat/painConsciousnessUtils.js +0 -7
  565. package/lib/systems/combat/painConsciousnessUtils.js.map +1 -1
  566. package/lib/systems/effects.d.ts +11 -0
  567. package/lib/systems/effects.d.ts.map +1 -1
  568. package/lib/systems/effects.js +10 -0
  569. package/lib/systems/effects.js.map +1 -1
  570. package/lib/systems/game.d.ts +16 -0
  571. package/lib/systems/game.d.ts.map +1 -1
  572. package/lib/systems/game.js +1 -0
  573. package/lib/systems/game.js.map +1 -1
  574. package/lib/systems/index.d.ts +5 -1
  575. package/lib/systems/index.d.ts.map +1 -1
  576. package/lib/systems/index.js.map +1 -1
  577. package/lib/systems/movement/InjuryMovementModifier.d.ts +0 -10
  578. package/lib/systems/movement/InjuryMovementModifier.d.ts.map +1 -1
  579. package/lib/systems/movement/InjuryMovementModifier.js +0 -7
  580. package/lib/systems/movement/InjuryMovementModifier.js.map +1 -1
  581. package/lib/systems/movement/integration.d.ts +0 -3
  582. package/lib/systems/movement/integration.d.ts.map +1 -1
  583. package/lib/systems/movement/integration.js +0 -3
  584. package/lib/systems/movement/integration.js.map +1 -1
  585. package/lib/systems/physics/AttackMovementPhysics.d.ts +0 -9
  586. package/lib/systems/physics/AttackMovementPhysics.d.ts.map +1 -1
  587. package/lib/systems/physics/AttackMovementPhysics.js +0 -7
  588. package/lib/systems/physics/AttackMovementPhysics.js.map +1 -1
  589. package/lib/systems/physics/CollisionDetection.d.ts +0 -6
  590. package/lib/systems/physics/CollisionDetection.d.ts.map +1 -1
  591. package/lib/systems/physics/CollisionDetection.js +0 -6
  592. package/lib/systems/physics/CollisionDetection.js.map +1 -1
  593. package/lib/systems/physics/CoordinateMapper.d.ts +0 -1
  594. package/lib/systems/physics/CoordinateMapper.d.ts.map +1 -1
  595. package/lib/systems/physics/CoordinateMapper.js +0 -1
  596. package/lib/systems/physics/CoordinateMapper.js.map +1 -1
  597. package/lib/systems/physics/KnockbackPhysics.d.ts +0 -11
  598. package/lib/systems/physics/KnockbackPhysics.d.ts.map +1 -1
  599. package/lib/systems/physics/KnockbackPhysics.js +0 -8
  600. package/lib/systems/physics/KnockbackPhysics.js.map +1 -1
  601. package/lib/systems/physics/MovementPhysics.d.ts +0 -10
  602. package/lib/systems/physics/MovementPhysics.d.ts.map +1 -1
  603. package/lib/systems/physics/MovementPhysics.js +0 -8
  604. package/lib/systems/physics/MovementPhysics.js.map +1 -1
  605. package/lib/systems/physics/PhysicalReachCalculator.d.ts +0 -6
  606. package/lib/systems/physics/PhysicalReachCalculator.d.ts.map +1 -1
  607. package/lib/systems/physics/PhysicalReachCalculator.js +0 -5
  608. package/lib/systems/physics/PhysicalReachCalculator.js.map +1 -1
  609. package/lib/systems/physics/SpeedModifierSystem.d.ts +0 -5
  610. package/lib/systems/physics/SpeedModifierSystem.d.ts.map +1 -1
  611. package/lib/systems/physics/SpeedModifierSystem.js +0 -4
  612. package/lib/systems/physics/SpeedModifierSystem.js.map +1 -1
  613. package/lib/systems/player.d.ts +0 -5
  614. package/lib/systems/player.d.ts.map +1 -1
  615. package/lib/systems/trigram/TrigramCalculator.d.ts +0 -1
  616. package/lib/systems/trigram/TrigramCalculator.d.ts.map +1 -1
  617. package/lib/systems/trigram/TrigramCalculator.js +0 -1
  618. package/lib/systems/trigram/TrigramCalculator.js.map +1 -1
  619. package/lib/systems/trigram/types.d.ts +0 -4
  620. package/lib/systems/trigram/types.d.ts.map +1 -1
  621. package/lib/systems/trigram/types.js +0 -2
  622. package/lib/systems/trigram/types.js.map +1 -1
  623. package/lib/systems/types.d.ts +7 -2
  624. package/lib/systems/types.d.ts.map +1 -1
  625. package/lib/systems/types.js.map +1 -1
  626. package/lib/systems/vitalpoint/DamageCalculator.d.ts +0 -3
  627. package/lib/systems/vitalpoint/DamageCalculator.d.ts.map +1 -1
  628. package/lib/systems/vitalpoint/DamageCalculator.js +0 -3
  629. package/lib/systems/vitalpoint/DamageCalculator.js.map +1 -1
  630. package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts +0 -8
  631. package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts.map +1 -1
  632. package/lib/systems/vitalpoint/KoreanVitalPoints.js +0 -8
  633. package/lib/systems/vitalpoint/KoreanVitalPoints.js.map +1 -1
  634. package/lib/systems/vitalpoint/VitalPointsData.d.ts +0 -3
  635. package/lib/systems/vitalpoint/VitalPointsData.d.ts.map +1 -1
  636. package/lib/systems/vitalpoint/VitalPointsData.js +0 -1
  637. package/lib/systems/vitalpoint/VitalPointsData.js.map +1 -1
  638. package/lib/types/PhysicsTypes.d.ts +21 -78
  639. package/lib/types/PhysicsTypes.d.ts.map +1 -1
  640. package/lib/types/PhysicsTypes.js +17 -63
  641. package/lib/types/PhysicsTypes.js.map +1 -1
  642. package/lib/types/clothing.d.ts +0 -9
  643. package/lib/types/clothing.d.ts.map +1 -1
  644. package/lib/types/constants/animations.d.ts +35 -1
  645. package/lib/types/constants/animations.d.ts.map +1 -1
  646. package/lib/types/constants/animations.js +12 -1
  647. package/lib/types/constants/animations.js.map +1 -1
  648. package/lib/types/constants/colors.d.ts +28 -2
  649. package/lib/types/constants/colors.d.ts.map +1 -1
  650. package/lib/types/constants/colors.js +30 -4
  651. package/lib/types/constants/colors.js.map +1 -1
  652. package/lib/types/constants/index.d.ts +5 -1
  653. package/lib/types/constants/index.d.ts.map +1 -1
  654. package/lib/types/constants/index.js.map +1 -1
  655. package/lib/types/constants/performance.d.ts +0 -2
  656. package/lib/types/constants/performance.d.ts.map +1 -1
  657. package/lib/types/constants/performance.js +0 -2
  658. package/lib/types/constants/performance.js.map +1 -1
  659. package/lib/types/constants/typography.d.ts +40 -2
  660. package/lib/types/constants/typography.d.ts.map +1 -1
  661. package/lib/types/constants/typography.js +40 -2
  662. package/lib/types/constants/typography.js.map +1 -1
  663. package/lib/types/constants/ui.d.ts +89 -1
  664. package/lib/types/constants/ui.d.ts.map +1 -1
  665. package/lib/types/constants/ui.js +33 -1
  666. package/lib/types/constants/ui.js.map +1 -1
  667. package/lib/types/facial.d.ts +0 -15
  668. package/lib/types/facial.d.ts.map +1 -1
  669. package/lib/types/facial.js +0 -8
  670. package/lib/types/facial.js.map +1 -1
  671. package/lib/types/hand-animation.d.ts +34 -147
  672. package/lib/types/hand-animation.d.ts.map +1 -1
  673. package/lib/types/hand-animation.js +0 -2
  674. package/lib/types/hand-animation.js.map +1 -1
  675. package/lib/types/injury.d.ts +0 -2
  676. package/lib/types/injury.d.ts.map +1 -1
  677. package/lib/types/injury.js +0 -1
  678. package/lib/types/injury.js.map +1 -1
  679. package/lib/types/physics.d.ts +0 -21
  680. package/lib/types/physics.d.ts.map +1 -1
  681. package/lib/types/physics.js +0 -6
  682. package/lib/types/physics.js.map +1 -1
  683. package/lib/types/physicsConstants.d.ts +0 -12
  684. package/lib/types/physicsConstants.d.ts.map +1 -1
  685. package/lib/types/physicsConstants.js +0 -12
  686. package/lib/types/physicsConstants.js.map +1 -1
  687. package/lib/types/player-visual.d.ts +45 -189
  688. package/lib/types/player-visual.d.ts.map +1 -1
  689. package/lib/types/technique.d.ts +1 -5
  690. package/lib/types/technique.d.ts.map +1 -1
  691. package/lib/types/techniqueId.d.ts +0 -1
  692. package/lib/types/techniqueId.d.ts.map +1 -1
  693. package/lib/types/techniqueId.js +0 -1
  694. package/lib/types/techniqueId.js.map +1 -1
  695. package/lib/utils/arenaWorldDimensions.d.ts +0 -11
  696. package/lib/utils/arenaWorldDimensions.d.ts.map +1 -1
  697. package/lib/utils/arenaWorldDimensions.js +0 -6
  698. package/lib/utils/arenaWorldDimensions.js.map +1 -1
  699. package/lib/utils/controlMapping.d.ts +3 -4
  700. package/lib/utils/controlMapping.d.ts.map +1 -1
  701. package/lib/utils/controlMapping.js +1 -2
  702. package/lib/utils/controlMapping.js.map +1 -1
  703. package/lib/utils/deviceDetection.d.ts +0 -5
  704. package/lib/utils/deviceDetection.d.ts.map +1 -1
  705. package/lib/utils/deviceDetection.js +0 -5
  706. package/lib/utils/deviceDetection.js.map +1 -1
  707. package/lib/utils/hapticFeedback.d.ts +23 -95
  708. package/lib/utils/hapticFeedback.d.ts.map +1 -1
  709. package/lib/utils/hapticFeedback.js +9 -39
  710. package/lib/utils/hapticFeedback.js.map +1 -1
  711. package/lib/utils/haptics.d.ts +0 -3
  712. package/lib/utils/haptics.d.ts.map +1 -1
  713. package/lib/utils/haptics.js +0 -1
  714. package/lib/utils/haptics.js.map +1 -1
  715. package/lib/utils/math.d.ts +0 -3
  716. package/lib/utils/math.d.ts.map +1 -1
  717. package/lib/utils/math.js +0 -2
  718. package/lib/utils/math.js.map +1 -1
  719. package/lib/utils/mobileLayoutHelpers.d.ts +0 -3
  720. package/lib/utils/mobileLayoutHelpers.d.ts.map +1 -1
  721. package/lib/utils/mobileLayoutHelpers.js +0 -1
  722. package/lib/utils/mobileLayoutHelpers.js.map +1 -1
  723. package/lib/utils/mobileUIUtils.d.ts +5 -100
  724. package/lib/utils/mobileUIUtils.d.ts.map +1 -1
  725. package/lib/utils/mobileUIUtils.js +0 -9
  726. package/lib/utils/mobileUIUtils.js.map +1 -1
  727. package/lib/utils/physicalAttributeValidation.d.ts.map +1 -1
  728. package/lib/utils/player3DHelpers.d.ts.map +1 -1
  729. package/lib/utils/player3DHelpers.js.map +1 -1
  730. package/lib/utils/responsiveLayoutHelpers.d.ts +0 -65
  731. package/lib/utils/responsiveLayoutHelpers.d.ts.map +1 -1
  732. package/lib/utils/responsiveLayoutHelpers.js +0 -65
  733. package/lib/utils/responsiveLayoutHelpers.js.map +1 -1
  734. package/lib/utils/responsiveOrientationConstants.d.ts +0 -7
  735. package/lib/utils/responsiveOrientationConstants.d.ts.map +1 -1
  736. package/lib/utils/responsiveOrientationConstants.js +0 -7
  737. package/lib/utils/responsiveOrientationConstants.js.map +1 -1
  738. package/lib/utils/safeAreaUtils.d.ts +0 -6
  739. package/lib/utils/safeAreaUtils.d.ts.map +1 -1
  740. package/lib/utils/safeAreaUtils.js +0 -2
  741. package/lib/utils/safeAreaUtils.js.map +1 -1
  742. package/lib/utils/sharedPhysicsConfig.d.ts +0 -4
  743. package/lib/utils/sharedPhysicsConfig.d.ts.map +1 -1
  744. package/lib/utils/sharedPhysicsConfig.js +0 -2
  745. package/lib/utils/sharedPhysicsConfig.js.map +1 -1
  746. package/lib/utils/skeletonScaling.d.ts +0 -9
  747. package/lib/utils/skeletonScaling.d.ts.map +1 -1
  748. package/lib/utils/skeletonScaling.js +0 -1
  749. package/lib/utils/skeletonScaling.js.map +1 -1
  750. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"TechniqueAnimationMapper.js","names":[],"sources":["../../../../src/systems/animation/core/TechniqueAnimationMapper.ts"],"sourcesContent":["/**\n * Technique Animation Mapper\n *\n * Maps 70 Korean techniques to appropriate attack animation types.\n * Implements the technique-to-animation link system for authentic martial arts animations.\n *\n * @module systems/animation/TechniqueAnimationMapper\n * @category Animation System\n * @korean 기술애니메이션매퍼\n */\n\nimport { AttackAnimationType } from \"@/types/skeletal\";\nimport { ATTACK_ANIMATIONS } from \"../catalogs/AttackAnimations\";\n\n/**\n * Maps AttackAnimationType to existing skeletal animation names\n *\n * Links the new enum-based system to existing animation implementation.\n * New animations will be added to AttackAnimations.ts as needed.\n *\n * @korean 애니메이션타입맵\n */\nconst ANIMATION_TYPE_TO_NAME_MAP: Record<AttackAnimationType, string> = {\n // Punch category (주먹 타격) - use existing animations\n [AttackAnimationType.PUNCH_HIGH]: \"jab\", // High punch to head\n [AttackAnimationType.PUNCH_MID]: \"cross\", // Mid-level cross punch\n [AttackAnimationType.PUNCH_LOW]: \"jab\", // Low punch to body (reuse jab for now)\n\n // Kick category (발차기) - use dedicated animations\n [AttackAnimationType.KICK_FRONT]: \"front_kick\", // Front kick (앞차기)\n [AttackAnimationType.KICK_SIDE]: \"side_kick\", // Side kick (옆차기) - NEW dedicated animation\n [AttackAnimationType.KICK_ROUNDHOUSE]: \"roundhouse_kick\", // Roundhouse kick (돌려차기)\n\n // Elbow category (팔꿈치 타격) - use dedicated elbow animations\n [AttackAnimationType.ELBOW_STRIKE]: \"elbow_strike\",\n [AttackAnimationType.ELBOW_UPPERCUT]: \"elbow_uppercut\", // NEW dedicated uppercut animation\n\n // Knee category (무릎 타격) - use dedicated knee animation\n [AttackAnimationType.KNEE_STRIKE]: \"knee_strike\",\n [AttackAnimationType.KNEE_CLINCH]: \"knee_strike\", // Reuse knee strike in clinch position\n\n // Pressure point category (급소 타격) - use precise jab motion\n [AttackAnimationType.PRESSURE_POINT]: \"jab\",\n [AttackAnimationType.PRESSURE_POINT_RAPID]: \"jab\",\n};\n\n/**\n * Get skeletal animation name for an attack animation type\n *\n * @param animationType - Attack animation type enum\n * @returns Name of skeletal animation from ATTACK_ANIMATIONS map\n *\n * @public\n * @korean 애니메이션타입에서이름가져오기\n */\nexport function getAnimationNameForType(\n animationType: AttackAnimationType,\n): string {\n return ANIMATION_TYPE_TO_NAME_MAP[animationType];\n}\n\n/**\n * Check if an animation type has a defined animation\n *\n * @param animationType - Attack animation type enum\n * @returns True if animation exists in ATTACK_ANIMATIONS map\n *\n * @public\n * @korean 애니메이션존재확인\n */\nexport function hasAnimationForType(\n animationType: AttackAnimationType,\n): boolean {\n const animationName = ANIMATION_TYPE_TO_NAME_MAP[animationType];\n return ATTACK_ANIMATIONS.has(animationName);\n}\n\n/**\n * Determines appropriate animation type from technique characteristics\n *\n * Uses technique name, damage type, and keywords to automatically\n * select the best-matching attack animation type.\n *\n * @param techniqueName - English or Korean technique name\n * @param techniqueId - Technique ID\n * @param damageType - Type of damage dealt\n * @returns Best-matching attack animation type\n *\n * @public\n * @korean 기술에서애니메이션타입결정\n */\nexport function determineAnimationTypeForTechnique(\n techniqueName: string,\n techniqueId: string,\n damageType?: string,\n): AttackAnimationType {\n const searchText = `${techniqueName} ${techniqueId}`.toLowerCase();\n\n // Pressure point / precise strikes (급소)\n if (\n searchText.includes(\"pressure\") ||\n searchText.includes(\"precise\") ||\n searchText.includes(\"nerve\") ||\n searchText.includes(\"vital\") ||\n searchText.includes(\"급소\") ||\n searchText.includes(\"신경\") ||\n damageType === \"nerve\" ||\n damageType === \"pressure\"\n ) {\n // Check for rapid/multi-hit variants\n if (\n searchText.includes(\"rapid\") ||\n searchText.includes(\"multiple\") ||\n searchText.includes(\"연속\")\n ) {\n return AttackAnimationType.PRESSURE_POINT_RAPID;\n }\n return AttackAnimationType.PRESSURE_POINT;\n }\n\n // Kicks (차기)\n if (\n searchText.includes(\"kick\") ||\n searchText.includes(\"차기\") ||\n searchText.includes(\"발\")\n ) {\n if (\n searchText.includes(\"roundhouse\") ||\n searchText.includes(\"round\") ||\n searchText.includes(\"돌려\") ||\n searchText.includes(\"회전\")\n ) {\n return AttackAnimationType.KICK_ROUNDHOUSE;\n }\n if (\n searchText.includes(\"side\") ||\n searchText.includes(\"옆\") ||\n searchText.includes(\"측면\")\n ) {\n return AttackAnimationType.KICK_SIDE;\n }\n // Default to front kick\n return AttackAnimationType.KICK_FRONT;\n }\n\n // Elbow strikes (팔꿈치)\n if (\n searchText.includes(\"elbow\") ||\n searchText.includes(\"팔꿈치\") ||\n searchText.includes(\"팔굽\")\n ) {\n if (\n searchText.includes(\"uppercut\") ||\n searchText.includes(\"올려\") ||\n searchText.includes(\"치켜\")\n ) {\n return AttackAnimationType.ELBOW_UPPERCUT;\n }\n return AttackAnimationType.ELBOW_STRIKE;\n }\n\n // Knee strikes (무릎)\n if (\n searchText.includes(\"knee\") ||\n searchText.includes(\"무릎\") ||\n searchText.includes(\"슬\")\n ) {\n if (\n searchText.includes(\"clinch\") ||\n searchText.includes(\"grab\") ||\n searchText.includes(\"잡고\")\n ) {\n return AttackAnimationType.KNEE_CLINCH;\n }\n return AttackAnimationType.KNEE_STRIKE;\n }\n\n // Punches (주먹) - check target height\n if (\n searchText.includes(\"punch\") ||\n searchText.includes(\"strike\") ||\n searchText.includes(\"주먹\") ||\n searchText.includes(\"권\") ||\n searchText.includes(\"격\")\n ) {\n // High attacks (head level)\n if (\n searchText.includes(\"head\") ||\n searchText.includes(\"high\") ||\n searchText.includes(\"temple\") ||\n searchText.includes(\"jaw\") ||\n searchText.includes(\"머리\") ||\n searchText.includes(\"관자\") ||\n searchText.includes(\"턱\")\n ) {\n return AttackAnimationType.PUNCH_HIGH;\n }\n // Low attacks (body level)\n if (\n searchText.includes(\"low\") ||\n searchText.includes(\"body\") ||\n searchText.includes(\"ribs\") ||\n searchText.includes(\"아래\") ||\n searchText.includes(\"복부\") ||\n searchText.includes(\"늑골\")\n ) {\n return AttackAnimationType.PUNCH_LOW;\n }\n // Default to mid-level punch\n return AttackAnimationType.PUNCH_MID;\n }\n\n // Default: mid-level punch for any unmatched technique\n return AttackAnimationType.PUNCH_MID;\n}\n\n/**\n * Calculates animation speed modifier based on technique power level\n *\n * Implements the rule:\n * - Light techniques (damage <20): 1.2x speed\n * - Normal techniques (damage 20-35): 1.0x speed\n * - Heavy techniques (damage >35): 0.8x speed\n *\n * @param damage - Base damage of the technique\n * @returns Speed modifier (0.8 - 1.2)\n *\n * @public\n * @korean 기술위력에서속도배율계산\n */\nexport function calculateSpeedModifierForDamage(damage: number): number {\n if (damage < 20) {\n return 1.2; // Light, fast techniques\n } else if (damage > 35) {\n return 0.8; // Heavy, powerful techniques\n }\n return 1.0; // Normal speed\n}\n\n/**\n * Get animation duration adjusted by speed modifier\n *\n * @param baseAnimationName - Name of base animation\n * @param speedModifier - Speed multiplier (0.8 - 1.2)\n * @returns Adjusted duration in milliseconds\n *\n * @public\n * @korean 조정된애니메이션지속시간\n */\nexport function getAdjustedAnimationDuration(\n baseAnimationName: string,\n speedModifier: number,\n): number {\n const animation = ATTACK_ANIMATIONS.get(baseAnimationName);\n if (!animation) {\n console.warn(\"Animation not found:\", baseAnimationName);\n return 200; // Default 200ms for missing animations\n }\n\n // Convert seconds to milliseconds and apply speed modifier\n const baseDurationMs = animation.duration * 1000;\n return Math.round(baseDurationMs / speedModifier);\n}\n\n/**\n * Comprehensive Technique Animation Mapping System\n *\n * **Korean**: 포괄적 기술 애니메이션 매핑 시스템\n *\n * Maps all 1024 technique configuration combinations\n * (8 stances × 4 technique types × 8 body parts × 4 intensities)\n * to appropriate animations with O(1) lookup performance.\n *\n * ## Architecture\n *\n * - **Primary Map**: Exact stance-type-part-intensity combinations\n * - **Fallback System**: 3-tier graceful degradation\n * 1. Exact match\n * 2. Intensity-agnostic match (same stance/type/part, medium intensity)\n * 3. Technique type generic (fallback to base technique animation)\n *\n * ## Korean Martial Arts Integration\n *\n * Each trigram stance influences animation selection:\n * - **☰ 건 (Geon)**: Direct, forceful animations\n * - **☱ 태 (Tae)**: Fluid, flowing animations\n * - **☲ 리 (Li)**: Precise, rapid animations\n * - **☳ 진 (Jin)**: Explosive, shocking animations\n * - **☴ 손 (Son)**: Continuous, pressuring animations\n * - **☵ 감 (Gam)**: Adaptive, countering animations\n * - **☶ 간 (Gan)**: Defensive, immovable animations\n * - **☷ 곤 (Gon)**: Grounding, takedown animations\n *\n * @module systems/animation/TechniqueAnimationMapper\n * @category Animation System\n * @korean 기술애니메이션매퍼\n */\n\nimport { TrigramStance } from \"@/types\";\nimport { BodyPart } from \"../../bodypart/types\";\nimport {\n AnimationPriority,\n AnimationState,\n MappingValidationResult,\n TechniqueAnimation,\n TechniqueAnimationKey,\n TechniqueIntensity,\n TechniqueTypeCategory,\n} from \"./types\";\n\n/**\n * Body part Korean terminology for animation names\n *\n * **Korean**: 신체 부위 한글 용어\n */\nconst BODY_PART_KOREAN: Record<string, string> = {\n [BodyPart.HEAD]: \"두부\",\n [BodyPart.NECK]: \"경부\",\n [BodyPart.TORSO_UPPER]: \"상체\",\n [BodyPart.TORSO_LOWER]: \"하체\",\n [BodyPart.ARM_LEFT]: \"좌팔\",\n [BodyPart.ARM_RIGHT]: \"우팔\",\n [BodyPart.LEG_LEFT]: \"좌각\",\n [BodyPart.LEG_RIGHT]: \"우각\",\n};\n\n/**\n * Body part English terminology for animation names\n */\nconst BODY_PART_ENGLISH: Record<string, string> = {\n [BodyPart.HEAD]: \"Head\",\n [BodyPart.NECK]: \"Neck\",\n [BodyPart.TORSO_UPPER]: \"Upper Torso\",\n [BodyPart.TORSO_LOWER]: \"Lower Torso\",\n [BodyPart.ARM_LEFT]: \"Left Arm\",\n [BodyPart.ARM_RIGHT]: \"Right Arm\",\n [BodyPart.LEG_LEFT]: \"Left Leg\",\n [BodyPart.LEG_RIGHT]: \"Right Leg\",\n};\n\n/**\n * Technique type Korean terminology\n *\n * **Korean**: 기술 유형 한글 용어\n */\nconst TECHNIQUE_TYPE_KOREAN: Record<TechniqueTypeCategory, string> = {\n strike: \"타격\",\n joint: \"관절\",\n throw: \"던지기\",\n pressure_point: \"급소\",\n};\n\n/**\n * Technique type English terminology\n */\nconst TECHNIQUE_TYPE_ENGLISH: Record<TechniqueTypeCategory, string> = {\n strike: \"Strike\",\n joint: \"Joint Lock\",\n throw: \"Throw\",\n pressure_point: \"Pressure Point\",\n};\n\n/**\n * Stance Korean names\n */\nconst STANCE_KOREAN: Record<string, string> = {\n [TrigramStance.GEON]: \"건괘\",\n [TrigramStance.TAE]: \"태괘\",\n [TrigramStance.LI]: \"리괘\",\n [TrigramStance.JIN]: \"진괘\",\n [TrigramStance.SON]: \"손괘\",\n [TrigramStance.GAM]: \"감괘\",\n [TrigramStance.GAN]: \"간괘\",\n [TrigramStance.GON]: \"곤괘\",\n};\n\n/**\n * Stance English names\n */\nconst STANCE_ENGLISH: Record<string, string> = {\n [TrigramStance.GEON]: \"Heaven\",\n [TrigramStance.TAE]: \"Lake\",\n [TrigramStance.LI]: \"Fire\",\n [TrigramStance.JIN]: \"Thunder\",\n [TrigramStance.SON]: \"Wind\",\n [TrigramStance.GAM]: \"Water\",\n [TrigramStance.GAN]: \"Mountain\",\n [TrigramStance.GON]: \"Earth\",\n};\n\n/**\n * Stance Animation Characteristics Configuration\n *\n * **Korean**: 자세 애니메이션 특성 설정\n *\n * Data-driven configuration for each stance's animation modifiers,\n * eliminating code duplication across stance mapping methods.\n *\n * @internal\n */\ninterface StanceAnimationConfig {\n /** Base duration multiplier (1.0 = normal) */\n readonly durationMultiplier: number;\n /** Impact frame offset from base */\n readonly impactFrameOffset: number;\n /** Recovery frames offset from base */\n readonly recoveryFrameOffset: number;\n /** Technique-specific overrides (optional) */\n readonly techniqueOverrides?: Partial<\n Record<\n TechniqueTypeCategory,\n {\n durationMultiplier?: number;\n impactFrameOffset?: number;\n recoveryFrameOffset?: number;\n }\n >\n >;\n}\n\n/**\n * Stance animation characteristics by trigram\n *\n * **Korean**: 팔괘 자세별 애니메이션 특성\n *\n * Each stance has unique timing characteristics reflecting its philosophy:\n * - ☰ 건 (Geon/Heaven): Direct, powerful - standard timing with technique variations\n * - ☱ 태 (Tae/Lake): Fluid, flowing - faster recovery\n * - ☲ 리 (Li/Fire): Precise, rapid - fastest overall\n * - ☳ 진 (Jin/Thunder): Explosive - fast attack, longer recovery\n * - ☴ 손 (Son/Wind): Continuous - slightly fast, mobile\n * - ☵ 감 (Gam/Water): Adaptive - slightly slower, standard recovery\n * - ☶ 간 (Gan/Mountain): Defensive - slowest, longest recovery\n * - ☷ 곤 (Gon/Earth): Grounding - standard with throw specialization\n */\nconst STANCE_ANIMATION_CONFIG: Record<TrigramStance, StanceAnimationConfig> = {\n [TrigramStance.GEON]: {\n durationMultiplier: 1.0,\n impactFrameOffset: 0,\n recoveryFrameOffset: 0,\n techniqueOverrides: {\n joint: { durationMultiplier: 1.2 },\n throw: {\n durationMultiplier: 1.5,\n impactFrameOffset: 4,\n recoveryFrameOffset: 5,\n },\n pressure_point: {\n durationMultiplier: 0.8,\n impactFrameOffset: -2,\n },\n },\n },\n [TrigramStance.TAE]: {\n durationMultiplier: 1.0,\n impactFrameOffset: 0,\n recoveryFrameOffset: -2,\n techniqueOverrides: {\n joint: { durationMultiplier: 1.3 },\n },\n },\n [TrigramStance.LI]: {\n durationMultiplier: 0.85,\n impactFrameOffset: -1,\n recoveryFrameOffset: -3,\n },\n [TrigramStance.JIN]: {\n durationMultiplier: 0.9,\n impactFrameOffset: 0,\n recoveryFrameOffset: 2,\n },\n [TrigramStance.SON]: {\n durationMultiplier: 0.95,\n impactFrameOffset: 0,\n recoveryFrameOffset: -1,\n },\n [TrigramStance.GAM]: {\n durationMultiplier: 1.1,\n impactFrameOffset: 1,\n recoveryFrameOffset: 0,\n },\n [TrigramStance.GAN]: {\n durationMultiplier: 1.2,\n impactFrameOffset: 2,\n recoveryFrameOffset: 3,\n },\n [TrigramStance.GON]: {\n durationMultiplier: 1.0,\n impactFrameOffset: 0,\n recoveryFrameOffset: 0,\n techniqueOverrides: {\n throw: {\n durationMultiplier: 1.6,\n impactFrameOffset: 3,\n recoveryFrameOffset: 4,\n },\n },\n },\n};\n\n/**\n * Comprehensive Technique Animation Mapper Class\n *\n * **Korean**: 기술 애니메이션 매퍼 클래스\n *\n * Provides O(1) lookup for all 1024 technique-stance combinations\n * with intelligent fallback system and build-time validation.\n *\n * @class\n * @public\n */\nexport class TechniqueAnimationMapper {\n /** Primary animation mapping table */\n private readonly animationMap: Map<string, TechniqueAnimation>;\n\n /** Fallback animations by technique type */\n private readonly fallbackMap: Map<TechniqueTypeCategory, AnimationState>;\n\n /** Cache for generated combinations (validation) */\n private allCombinationsCache?: readonly TechniqueAnimationKey[];\n\n constructor() {\n this.animationMap = new Map();\n this.fallbackMap = this.initializeFallbacks();\n this.initializeCompleteMapping();\n }\n\n /**\n * Get animation for specific technique\n *\n * **Korean**: 특정 기술의 애니메이션 가져오기\n *\n * Uses 3-tier lookup strategy:\n * 1. Exact match (stance + type + part + intensity)\n * 2. Intensity-agnostic (stance + type + part + medium intensity)\n * 3. Technique type fallback (generic animation for technique type)\n *\n * @param key - Technique animation key\n * @returns Technique animation configuration\n *\n * @public\n * @korean 애니메이션가져오기\n */\n public getAnimation(key: TechniqueAnimationKey): TechniqueAnimation {\n // Try exact match first\n const lookupKey = this.createLookupKey(key);\n const exactMatch = this.animationMap.get(lookupKey);\n if (exactMatch) {\n return exactMatch;\n }\n\n // Fallback: Try without intensity (use medium)\n const genericKey = this.createLookupKey({\n ...key,\n intensity: \"medium\",\n });\n const genericMatch = this.animationMap.get(genericKey);\n if (genericMatch) {\n return this.adjustForIntensity(genericMatch, key.intensity);\n }\n\n // Final fallback: Use technique type generic animation\n return this.getFallbackAnimation(key);\n }\n\n /**\n * Create composite lookup key from technique animation key\n *\n * **Korean**: 복합 조회 키 생성\n *\n * Format: \"stance-type-part-intensity\"\n * Example: \"geon-strike-head-heavy\"\n *\n * @param key - Technique animation key\n * @returns Composite lookup string\n *\n * @private\n */\n private createLookupKey(key: TechniqueAnimationKey): string {\n return `${key.stance}-${key.techniqueType}-${key.bodyPart}-${key.intensity}`;\n }\n\n /**\n * Initialize fallback animations by technique type\n *\n * **Korean**: 기술 유형별 대체 애니메이션 초기화\n *\n * @private\n */\n private initializeFallbacks(): Map<TechniqueTypeCategory, AnimationState> {\n return new Map([\n [\"strike\", AnimationState.ATTACK],\n [\"joint\", AnimationState.ATTACK],\n [\"throw\", AnimationState.ATTACK],\n [\"pressure_point\", AnimationState.ATTACK],\n ]);\n }\n\n /**\n * Initialize complete mapping table\n *\n * **Korean**: 전체 매핑 테이블 초기화\n *\n * Maps all 1024 combinations organized by:\n * - 8 stances\n * - 4 technique types\n * - 8 body parts\n * - 4 intensity levels\n *\n * Uses data-driven STANCE_ANIMATION_CONFIG to eliminate code duplication.\n *\n * @private\n */\n private initializeCompleteMapping(): void {\n const bodyParts = Object.values(BodyPart);\n const intensities: TechniqueIntensity[] = [\n \"light\",\n \"medium\",\n \"heavy\",\n \"critical\",\n ];\n const techniqueTypes: TechniqueTypeCategory[] = [\n \"strike\",\n \"joint\",\n \"throw\",\n \"pressure_point\",\n ];\n\n // Map all 8 trigram stances using configuration\n Object.values(TrigramStance).forEach((stance) => {\n const config = STANCE_ANIMATION_CONFIG[stance];\n\n bodyParts.forEach((bodyPart) => {\n intensities.forEach((intensity) => {\n techniqueTypes.forEach((techniqueType) => {\n // Get base values with technique-specific overrides\n const override = config.techniqueOverrides?.[techniqueType];\n const durationMult =\n override?.durationMultiplier ?? config.durationMultiplier;\n const impactOffset =\n override?.impactFrameOffset ?? config.impactFrameOffset;\n const recoveryOffset =\n override?.recoveryFrameOffset ?? config.recoveryFrameOffset;\n\n this.mapTechnique(\n { stance, techniqueType, bodyPart, intensity },\n {\n animationState: AnimationState.ATTACK,\n duration:\n this.getDurationForIntensity(intensity) * durationMult,\n impactFrame:\n this.getImpactFrameForIntensity(intensity) + impactOffset,\n recoveryFrames:\n this.getRecoveryFramesForIntensity(intensity) +\n recoveryOffset,\n priority: AnimationPriority.ATTACK,\n koreanName: this.generateKoreanName(\n stance,\n techniqueType,\n bodyPart,\n intensity,\n ),\n englishName: this.generateEnglishName(\n stance,\n techniqueType,\n bodyPart,\n intensity,\n ),\n },\n );\n });\n });\n });\n });\n }\n /**\n * Add single technique mapping to the map with automatic rotation calculation\n *\n * **Korean**: 단일 기술 매핑 추가\n *\n * @private\n */\n private mapTechnique(\n key: TechniqueAnimationKey,\n animation: TechniqueAnimation,\n ): void {\n // Calculate rotation properties if not provided\n const torsoRotation =\n animation.torsoRotation ??\n this.getTorsoRotationForStanceTechnique(key.stance, key.techniqueType);\n const hipEngagement =\n animation.hipEngagement ??\n this.getHipEngagementForStanceTechnique(\n key.stance,\n key.techniqueType,\n key.intensity,\n );\n const powerModifier =\n animation.powerModifier ??\n this.calculatePowerModifier(hipEngagement, key.techniqueType);\n\n // Create complete animation with rotation properties\n const completeAnimation: TechniqueAnimation = {\n ...animation,\n torsoRotation,\n hipEngagement,\n powerModifier,\n };\n\n const lookupKey = this.createLookupKey(key);\n this.animationMap.set(lookupKey, completeAnimation);\n }\n\n /**\n * Get duration based on intensity level\n *\n * **Korean**: 강도 레벨에 따른 지속시간 가져오기\n *\n * @private\n */\n private getDurationForIntensity(intensity: TechniqueIntensity): number {\n const baseDuration = 0.6; // 600ms base\n switch (intensity) {\n case \"light\":\n return baseDuration * 0.7; // 420ms\n case \"medium\":\n return baseDuration; // 600ms\n case \"heavy\":\n return baseDuration * 1.3; // 780ms\n case \"critical\":\n return baseDuration * 1.6; // 960ms\n }\n }\n\n /**\n * Get impact frame based on intensity level\n *\n * **Korean**: 강도 레벨에 따른 충격 프레임 가져오기\n *\n * @private\n */\n private getImpactFrameForIntensity(intensity: TechniqueIntensity): number {\n switch (intensity) {\n case \"light\":\n return 8; // Frame 8 at 60fps\n case \"medium\":\n return 10; // Frame 10\n case \"heavy\":\n return 14; // Frame 14\n case \"critical\":\n return 18; // Frame 18\n }\n }\n\n /**\n * Get recovery frames based on intensity level\n *\n * **Korean**: 강도 레벨에 따른 회복 프레임 가져오기\n *\n * @private\n */\n private getRecoveryFramesForIntensity(intensity: TechniqueIntensity): number {\n switch (intensity) {\n case \"light\":\n return 8; // 8 frames recovery\n case \"medium\":\n return 12; // 12 frames recovery\n case \"heavy\":\n return 18; // 18 frames recovery\n case \"critical\":\n return 24; // 24 frames recovery\n }\n }\n\n /**\n * Calculate torso rotation for stance-technique combination\n *\n * **Korean**: 자세-기술 조합의 허리 회전 계산\n *\n * Returns rotation in radians (-π/2 to π/2)\n *\n * @private\n */\n private getTorsoRotationForStanceTechnique(\n stance: string,\n techniqueType: TechniqueTypeCategory,\n ): number {\n // Stance-specific base rotations (in radians)\n const stanceRotations: Record<string, number> = {\n [TrigramStance.GEON]: Math.PI / 6, // 30° - Direct, moderate rotation\n [TrigramStance.TAE]: Math.PI / 18, // 10° - Minimal rotation, fluid\n [TrigramStance.LI]: Math.PI / 9, // 20° - Quick snap rotation\n [TrigramStance.JIN]: Math.PI / 4, // 45° - Wide explosive rotation\n [TrigramStance.SON]: Math.PI / 12, // 15° - Continuous adaptive flow\n [TrigramStance.GAM]: Math.PI / 8, // 22.5° - Circular wave motion\n [TrigramStance.GAN]: Math.PI / 36, // 5° - Stable, minimal rotation\n [TrigramStance.GON]: Math.PI / 3, // 60° - Deep grounded rotation\n };\n\n const baseRotation = stanceRotations[stance] ?? 0;\n\n // Technique type modifiers\n const techniqueMultipliers: Record<TechniqueTypeCategory, number> = {\n strike: 1.2, // 20% more rotation for strikes\n joint: 0.7, // 30% less for joint locks\n throw: 1.5, // 50% more for throws\n pressure_point: 0.8, // 20% less for precision strikes\n };\n\n const multiplier = techniqueMultipliers[techniqueType] ?? 1.0;\n return Math.min(Math.PI / 2, baseRotation * multiplier); // Clamp to ±90°\n }\n\n /**\n * Calculate hip engagement for stance-technique combination\n *\n * **Korean**: 자세-기술 조합의 골반 참여도 계산\n *\n * Returns engagement factor (0-1)\n *\n * @private\n */\n private getHipEngagementForStanceTechnique(\n stance: string,\n techniqueType: TechniqueTypeCategory,\n intensity: TechniqueIntensity,\n ): number {\n // Stance-specific base hip engagement\n const stanceEngagement: Record<string, number> = {\n [TrigramStance.GEON]: 0.9, // High engagement - direct force\n [TrigramStance.TAE]: 0.5, // Moderate - fluid movement\n [TrigramStance.LI]: 0.7, // Good - rapid techniques\n [TrigramStance.JIN]: 1.0, // Maximum - explosive power\n [TrigramStance.SON]: 0.6, // Moderate - continuous pressure\n [TrigramStance.GAM]: 0.7, // Good - adaptive flow\n [TrigramStance.GAN]: 0.3, // Low - stable defensive\n [TrigramStance.GON]: 0.95, // Very high - grounding techniques\n };\n\n const baseEngagement = stanceEngagement[stance] ?? 0.6;\n\n // Technique type modifiers\n const techniqueMultipliers: Record<TechniqueTypeCategory, number> = {\n strike: 1.0, // Full engagement for strikes\n joint: 0.6, // Lower for joint manipulation\n throw: 1.1, // Highest for throws\n pressure_point: 0.7, // Moderate for precision\n };\n\n // Intensity modifiers\n const intensityMultipliers: Record<TechniqueIntensity, number> = {\n light: 0.7,\n medium: 0.9,\n heavy: 1.0,\n critical: 1.1,\n };\n\n const engagement =\n baseEngagement *\n techniqueMultipliers[techniqueType] *\n intensityMultipliers[intensity];\n\n return Math.min(1.0, Math.max(0.0, engagement)); // Clamp to 0-1\n }\n\n /**\n * Calculate power modifier from hip engagement\n *\n * **Korean**: 골반 참여도로부터 파워 배율 계산\n *\n * Based on PR #1132 calculateHipRotationPowerModifier system\n *\n * @private\n */\n private calculatePowerModifier(\n hipEngagement: number,\n techniqueType: TechniqueTypeCategory,\n ): number {\n // Base power curve: 1.0 + (engagement * maxBonus)\n const maxBonusByType: Record<TechniqueTypeCategory, number> = {\n strike: 0.3, // 30% max bonus for strikes\n joint: 0.1, // 10% for joint locks\n throw: 0.2, // 20% for throws\n pressure_point: 0.25, // 25% for pressure points\n };\n\n const maxBonus = maxBonusByType[techniqueType] ?? 0.2;\n return 1.0 + hipEngagement * maxBonus;\n }\n\n /**\n * Generate Korean technique name\n *\n * **Korean**: 한글 기술 이름 생성\n *\n * Format: \"스탠스 신체부위 강도 기술유형\"\n * Example: \"건괘 두부 강 타격\"\n *\n * @private\n */\n private generateKoreanName(\n stance: string,\n techniqueType: TechniqueTypeCategory,\n bodyPart: string,\n intensity: TechniqueIntensity,\n ): string {\n const stanceName = STANCE_KOREAN[stance] ?? stance;\n const bodyPartName = BODY_PART_KOREAN[bodyPart] ?? bodyPart;\n const techniqueName = TECHNIQUE_TYPE_KOREAN[techniqueType] ?? techniqueType;\n const intensityName = this.getIntensityKorean(intensity);\n\n return `${stanceName} ${bodyPartName} ${intensityName} ${techniqueName}`;\n }\n\n /**\n * Generate English technique name\n *\n * Format: \"Stance BodyPart Intensity TechniqueType\"\n * Example: \"Heaven Head Heavy Strike\"\n *\n * @private\n */\n private generateEnglishName(\n stance: string,\n techniqueType: TechniqueTypeCategory,\n bodyPart: string,\n intensity: TechniqueIntensity,\n ): string {\n const stanceName = STANCE_ENGLISH[stance] ?? stance;\n const bodyPartName = BODY_PART_ENGLISH[bodyPart] ?? bodyPart;\n const techniqueName =\n TECHNIQUE_TYPE_ENGLISH[techniqueType] ?? techniqueType;\n const intensityName =\n intensity.charAt(0).toUpperCase() + intensity.slice(1);\n\n return `${stanceName} ${bodyPartName} ${intensityName} ${techniqueName}`;\n }\n\n /**\n * Get Korean intensity name\n *\n * @private\n */\n private getIntensityKorean(intensity: TechniqueIntensity): string {\n switch (intensity) {\n case \"light\":\n return \"경\";\n case \"medium\":\n return \"중\";\n case \"heavy\":\n return \"강\";\n case \"critical\":\n return \"극\";\n }\n }\n\n /**\n * Adjust animation for different intensity\n *\n * **Korean**: 강도에 따른 애니메이션 조정\n *\n * @private\n */\n private adjustForIntensity(\n animation: TechniqueAnimation,\n intensity: TechniqueIntensity,\n ): TechniqueAnimation {\n const durationMultiplier =\n this.getDurationMultiplierForIntensity(intensity);\n\n return {\n ...animation,\n duration: animation.duration * durationMultiplier,\n impactFrame: Math.round(animation.impactFrame * durationMultiplier),\n recoveryFrames: Math.round(animation.recoveryFrames * durationMultiplier),\n };\n }\n\n /**\n * Get duration multiplier for intensity\n *\n * @private\n */\n private getDurationMultiplierForIntensity(\n intensity: TechniqueIntensity,\n ): number {\n switch (intensity) {\n case \"light\":\n return 0.7;\n case \"medium\":\n return 1.0;\n case \"heavy\":\n return 1.3;\n case \"critical\":\n return 1.6;\n }\n }\n\n /**\n * Get fallback animation when no exact match\n *\n * **Korean**: 일치하는 항목이 없을 때 대체 애니메이션 가져오기\n *\n * @private\n */\n private getFallbackAnimation(key: TechniqueAnimationKey): TechniqueAnimation {\n const fallbackState =\n this.fallbackMap.get(key.techniqueType) ?? AnimationState.ATTACK;\n\n return {\n animationState: fallbackState,\n duration: this.getDurationForIntensity(key.intensity),\n impactFrame: this.getImpactFrameForIntensity(key.intensity),\n recoveryFrames: this.getRecoveryFramesForIntensity(key.intensity),\n priority: AnimationPriority.ATTACK,\n koreanName: \"일반 기술\",\n englishName: \"Generic Technique\",\n };\n }\n\n /**\n * Generate all possible technique combinations\n *\n * **Korean**: 모든 가능한 기술 조합 생성\n *\n * @private\n */\n private generateAllCombinations(): readonly TechniqueAnimationKey[] {\n if (this.allCombinationsCache) {\n return this.allCombinationsCache;\n }\n\n const stances = Object.values(TrigramStance);\n const techniqueTypes: TechniqueTypeCategory[] = [\n \"strike\",\n \"joint\",\n \"throw\",\n \"pressure_point\",\n ];\n const bodyParts = Object.values(BodyPart);\n const intensities: TechniqueIntensity[] = [\n \"light\",\n \"medium\",\n \"heavy\",\n \"critical\",\n ];\n\n const combinations: TechniqueAnimationKey[] = [];\n\n stances.forEach((stance) => {\n techniqueTypes.forEach((techniqueType) => {\n bodyParts.forEach((bodyPart) => {\n intensities.forEach((intensity) => {\n combinations.push({\n stance,\n techniqueType,\n bodyPart,\n intensity,\n });\n });\n });\n });\n });\n\n this.allCombinationsCache = combinations;\n return combinations;\n }\n\n /**\n * Validate mapping completeness at build time\n *\n * **Korean**: 빌드 시간에 매핑 완전성 검증\n *\n * Reports coverage percentage and lists missing mappings.\n * Expected: 8 stances × 4 technique types × 8 body parts × 4 intensities = 1024 combinations\n *\n * @returns Validation result with coverage and missing mappings\n *\n * @public\n * @korean 완전성검증\n */\n public validateCompleteness(): MappingValidationResult {\n const allCombinations = this.generateAllCombinations();\n const missing: TechniqueAnimationKey[] = [];\n\n allCombinations.forEach((combo) => {\n const key = this.createLookupKey(combo);\n if (!this.animationMap.has(key)) {\n missing.push(combo);\n }\n });\n\n const mapped = allCombinations.length - missing.length;\n const coverage = (mapped / allCombinations.length) * 100;\n\n return {\n coverage,\n total: allCombinations.length,\n mapped,\n missing,\n };\n }\n\n /**\n * Get total number of mapped combinations\n *\n * **Korean**: 매핑된 조합의 총 개수 가져오기\n *\n * @returns Number of mapped combinations\n *\n * @public\n */\n public getMappedCount(): number {\n return this.animationMap.size;\n }\n}\n\n/**\n * Singleton instance of TechniqueAnimationMapper\n *\n * **Korean**: 기술 애니메이션 매퍼 싱글톤 인스턴스\n *\n * Use this instance throughout the application for consistent\n * technique animation mapping.\n *\n * @public\n * @korean 싱글톤인스턴스\n */\nexport const techniqueAnimationMapper = new TechniqueAnimationMapper();\n"],"mappings":"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"}
1
+ {"version":3,"file":"TechniqueAnimationMapper.js","names":[],"sources":["../../../../src/systems/animation/core/TechniqueAnimationMapper.ts"],"sourcesContent":["/**\n * Technique Animation Mapper\n *\n * Maps 70 Korean techniques to appropriate attack animation types.\n * Implements the technique-to-animation link system for authentic martial arts animations.\n *\n * @module systems/animation/TechniqueAnimationMapper\n * @category Animation System\n * @korean 기술애니메이션매퍼\n */\n\nimport { AttackAnimationType } from \"@/types/skeletal\";\nimport { ATTACK_ANIMATIONS } from \"../catalogs/AttackAnimations\";\n\n/**\n * Maps AttackAnimationType to existing skeletal animation names\n *\n * Links the new enum-based system to existing animation implementation.\n * New animations will be added to AttackAnimations.ts as needed.\n *\n * @korean 애니메이션타입맵\n */\nconst ANIMATION_TYPE_TO_NAME_MAP: Record<AttackAnimationType, string> = {\n // Punch category (주먹 타격) - use existing animations\n [AttackAnimationType.PUNCH_HIGH]: \"jab\", // High punch to head\n [AttackAnimationType.PUNCH_MID]: \"cross\", // Mid-level cross punch\n [AttackAnimationType.PUNCH_LOW]: \"jab\", // Low punch to body (reuse jab for now)\n\n // Kick category (발차기) - use dedicated animations\n [AttackAnimationType.KICK_FRONT]: \"front_kick\", // Front kick (앞차기)\n [AttackAnimationType.KICK_SIDE]: \"side_kick\", // Side kick (옆차기) - NEW dedicated animation\n [AttackAnimationType.KICK_ROUNDHOUSE]: \"roundhouse_kick\", // Roundhouse kick (돌려차기)\n\n // Elbow category (팔꿈치 타격) - use dedicated elbow animations\n [AttackAnimationType.ELBOW_STRIKE]: \"elbow_strike\",\n [AttackAnimationType.ELBOW_UPPERCUT]: \"elbow_uppercut\", // NEW dedicated uppercut animation\n\n // Knee category (무릎 타격) - use dedicated knee animation\n [AttackAnimationType.KNEE_STRIKE]: \"knee_strike\",\n [AttackAnimationType.KNEE_CLINCH]: \"knee_strike\", // Reuse knee strike in clinch position\n\n // Pressure point category (급소 타격) - use precise jab motion\n [AttackAnimationType.PRESSURE_POINT]: \"jab\",\n [AttackAnimationType.PRESSURE_POINT_RAPID]: \"jab\",\n};\n\n/**\n * Get skeletal animation name for an attack animation type\n *\n * @param animationType - Attack animation type enum\n * @returns Name of skeletal animation from ATTACK_ANIMATIONS map\n *\n * @korean 애니메이션타입에서이름가져오기\n */\nexport function getAnimationNameForType(\n animationType: AttackAnimationType,\n): string {\n return ANIMATION_TYPE_TO_NAME_MAP[animationType];\n}\n\n/**\n * Check if an animation type has a defined animation\n *\n * @param animationType - Attack animation type enum\n * @returns True if animation exists in ATTACK_ANIMATIONS map\n *\n * @korean 애니메이션존재확인\n */\nexport function hasAnimationForType(\n animationType: AttackAnimationType,\n): boolean {\n const animationName = ANIMATION_TYPE_TO_NAME_MAP[animationType];\n return ATTACK_ANIMATIONS.has(animationName);\n}\n\n/**\n * Determines appropriate animation type from technique characteristics\n *\n * Uses technique name, damage type, and keywords to automatically\n * select the best-matching attack animation type.\n *\n * @param techniqueName - English or Korean technique name\n * @param techniqueId - Technique ID\n * @param damageType - Type of damage dealt\n * @returns Best-matching attack animation type\n *\n * @korean 기술에서애니메이션타입결정\n */\nexport function determineAnimationTypeForTechnique(\n techniqueName: string,\n techniqueId: string,\n damageType?: string,\n): AttackAnimationType {\n const searchText = `${techniqueName} ${techniqueId}`.toLowerCase();\n\n // Pressure point / precise strikes (급소)\n if (\n searchText.includes(\"pressure\") ||\n searchText.includes(\"precise\") ||\n searchText.includes(\"nerve\") ||\n searchText.includes(\"vital\") ||\n searchText.includes(\"급소\") ||\n searchText.includes(\"신경\") ||\n damageType === \"nerve\" ||\n damageType === \"pressure\"\n ) {\n // Check for rapid/multi-hit variants\n if (\n searchText.includes(\"rapid\") ||\n searchText.includes(\"multiple\") ||\n searchText.includes(\"연속\")\n ) {\n return AttackAnimationType.PRESSURE_POINT_RAPID;\n }\n return AttackAnimationType.PRESSURE_POINT;\n }\n\n // Kicks (차기)\n if (\n searchText.includes(\"kick\") ||\n searchText.includes(\"차기\") ||\n searchText.includes(\"발\")\n ) {\n if (\n searchText.includes(\"roundhouse\") ||\n searchText.includes(\"round\") ||\n searchText.includes(\"돌려\") ||\n searchText.includes(\"회전\")\n ) {\n return AttackAnimationType.KICK_ROUNDHOUSE;\n }\n if (\n searchText.includes(\"side\") ||\n searchText.includes(\"옆\") ||\n searchText.includes(\"측면\")\n ) {\n return AttackAnimationType.KICK_SIDE;\n }\n // Default to front kick\n return AttackAnimationType.KICK_FRONT;\n }\n\n // Elbow strikes (팔꿈치)\n if (\n searchText.includes(\"elbow\") ||\n searchText.includes(\"팔꿈치\") ||\n searchText.includes(\"팔굽\")\n ) {\n if (\n searchText.includes(\"uppercut\") ||\n searchText.includes(\"올려\") ||\n searchText.includes(\"치켜\")\n ) {\n return AttackAnimationType.ELBOW_UPPERCUT;\n }\n return AttackAnimationType.ELBOW_STRIKE;\n }\n\n // Knee strikes (무릎)\n if (\n searchText.includes(\"knee\") ||\n searchText.includes(\"무릎\") ||\n searchText.includes(\"슬\")\n ) {\n if (\n searchText.includes(\"clinch\") ||\n searchText.includes(\"grab\") ||\n searchText.includes(\"잡고\")\n ) {\n return AttackAnimationType.KNEE_CLINCH;\n }\n return AttackAnimationType.KNEE_STRIKE;\n }\n\n // Punches (주먹) - check target height\n if (\n searchText.includes(\"punch\") ||\n searchText.includes(\"strike\") ||\n searchText.includes(\"주먹\") ||\n searchText.includes(\"권\") ||\n searchText.includes(\"격\")\n ) {\n // High attacks (head level)\n if (\n searchText.includes(\"head\") ||\n searchText.includes(\"high\") ||\n searchText.includes(\"temple\") ||\n searchText.includes(\"jaw\") ||\n searchText.includes(\"머리\") ||\n searchText.includes(\"관자\") ||\n searchText.includes(\"턱\")\n ) {\n return AttackAnimationType.PUNCH_HIGH;\n }\n // Low attacks (body level)\n if (\n searchText.includes(\"low\") ||\n searchText.includes(\"body\") ||\n searchText.includes(\"ribs\") ||\n searchText.includes(\"아래\") ||\n searchText.includes(\"복부\") ||\n searchText.includes(\"늑골\")\n ) {\n return AttackAnimationType.PUNCH_LOW;\n }\n // Default to mid-level punch\n return AttackAnimationType.PUNCH_MID;\n }\n\n // Default: mid-level punch for any unmatched technique\n return AttackAnimationType.PUNCH_MID;\n}\n\n/**\n * Calculates animation speed modifier based on technique power level\n *\n * Implements the rule:\n * - Light techniques (damage <20): 1.2x speed\n * - Normal techniques (damage 20-35): 1.0x speed\n * - Heavy techniques (damage >35): 0.8x speed\n *\n * @param damage - Base damage of the technique\n * @returns Speed modifier (0.8 - 1.2)\n *\n * @korean 기술위력에서속도배율계산\n */\nexport function calculateSpeedModifierForDamage(damage: number): number {\n if (damage < 20) {\n return 1.2; // Light, fast techniques\n } else if (damage > 35) {\n return 0.8; // Heavy, powerful techniques\n }\n return 1.0; // Normal speed\n}\n\n/**\n * Get animation duration adjusted by speed modifier\n *\n * @param baseAnimationName - Name of base animation\n * @param speedModifier - Speed multiplier (0.8 - 1.2)\n * @returns Adjusted duration in milliseconds\n *\n * @korean 조정된애니메이션지속시간\n */\nexport function getAdjustedAnimationDuration(\n baseAnimationName: string,\n speedModifier: number,\n): number {\n const animation = ATTACK_ANIMATIONS.get(baseAnimationName);\n if (!animation) {\n console.warn(\"Animation not found:\", baseAnimationName);\n return 200; // Default 200ms for missing animations\n }\n\n // Convert seconds to milliseconds and apply speed modifier\n const baseDurationMs = animation.duration * 1000;\n return Math.round(baseDurationMs / speedModifier);\n}\n\n/**\n * Comprehensive Technique Animation Mapping System\n *\n * **Korean**: 포괄적 기술 애니메이션 매핑 시스템\n *\n * Maps all 1024 technique configuration combinations\n * (8 stances × 4 technique types × 8 body parts × 4 intensities)\n * to appropriate animations with O(1) lookup performance.\n *\n * ## Architecture\n *\n * - **Primary Map**: Exact stance-type-part-intensity combinations\n * - **Fallback System**: 3-tier graceful degradation\n * 1. Exact match\n * 2. Intensity-agnostic match (same stance/type/part, medium intensity)\n * 3. Technique type generic (fallback to base technique animation)\n *\n * ## Korean Martial Arts Integration\n *\n * Each trigram stance influences animation selection:\n * - **☰ 건 (Geon)**: Direct, forceful animations\n * - **☱ 태 (Tae)**: Fluid, flowing animations\n * - **☲ 리 (Li)**: Precise, rapid animations\n * - **☳ 진 (Jin)**: Explosive, shocking animations\n * - **☴ 손 (Son)**: Continuous, pressuring animations\n * - **☵ 감 (Gam)**: Adaptive, countering animations\n * - **☶ 간 (Gan)**: Defensive, immovable animations\n * - **☷ 곤 (Gon)**: Grounding, takedown animations\n *\n * @module systems/animation/TechniqueAnimationMapper\n * @category Animation System\n * @korean 기술애니메이션매퍼\n */\n\nimport { TrigramStance } from \"@/types\";\nimport { BodyPart } from \"../../bodypart/types\";\nimport {\n AnimationPriority,\n AnimationState,\n MappingValidationResult,\n TechniqueAnimation,\n TechniqueAnimationKey,\n TechniqueIntensity,\n TechniqueTypeCategory,\n} from \"./types\";\n\n/**\n * Body part Korean terminology for animation names\n *\n * **Korean**: 신체 부위 한글 용어\n */\nconst BODY_PART_KOREAN: Record<string, string> = {\n [BodyPart.HEAD]: \"두부\",\n [BodyPart.NECK]: \"경부\",\n [BodyPart.TORSO_UPPER]: \"상체\",\n [BodyPart.TORSO_LOWER]: \"하체\",\n [BodyPart.ARM_LEFT]: \"좌팔\",\n [BodyPart.ARM_RIGHT]: \"우팔\",\n [BodyPart.LEG_LEFT]: \"좌각\",\n [BodyPart.LEG_RIGHT]: \"우각\",\n};\n\n/**\n * Body part English terminology for animation names\n */\nconst BODY_PART_ENGLISH: Record<string, string> = {\n [BodyPart.HEAD]: \"Head\",\n [BodyPart.NECK]: \"Neck\",\n [BodyPart.TORSO_UPPER]: \"Upper Torso\",\n [BodyPart.TORSO_LOWER]: \"Lower Torso\",\n [BodyPart.ARM_LEFT]: \"Left Arm\",\n [BodyPart.ARM_RIGHT]: \"Right Arm\",\n [BodyPart.LEG_LEFT]: \"Left Leg\",\n [BodyPart.LEG_RIGHT]: \"Right Leg\",\n};\n\n/**\n * Technique type Korean terminology\n *\n * **Korean**: 기술 유형 한글 용어\n */\nconst TECHNIQUE_TYPE_KOREAN: Record<TechniqueTypeCategory, string> = {\n strike: \"타격\",\n joint: \"관절\",\n throw: \"던지기\",\n pressure_point: \"급소\",\n};\n\n/**\n * Technique type English terminology\n */\nconst TECHNIQUE_TYPE_ENGLISH: Record<TechniqueTypeCategory, string> = {\n strike: \"Strike\",\n joint: \"Joint Lock\",\n throw: \"Throw\",\n pressure_point: \"Pressure Point\",\n};\n\n/**\n * Stance Korean names\n */\nconst STANCE_KOREAN: Record<string, string> = {\n [TrigramStance.GEON]: \"건괘\",\n [TrigramStance.TAE]: \"태괘\",\n [TrigramStance.LI]: \"리괘\",\n [TrigramStance.JIN]: \"진괘\",\n [TrigramStance.SON]: \"손괘\",\n [TrigramStance.GAM]: \"감괘\",\n [TrigramStance.GAN]: \"간괘\",\n [TrigramStance.GON]: \"곤괘\",\n};\n\n/**\n * Stance English names\n */\nconst STANCE_ENGLISH: Record<string, string> = {\n [TrigramStance.GEON]: \"Heaven\",\n [TrigramStance.TAE]: \"Lake\",\n [TrigramStance.LI]: \"Fire\",\n [TrigramStance.JIN]: \"Thunder\",\n [TrigramStance.SON]: \"Wind\",\n [TrigramStance.GAM]: \"Water\",\n [TrigramStance.GAN]: \"Mountain\",\n [TrigramStance.GON]: \"Earth\",\n};\n\n/**\n * Stance Animation Characteristics Configuration\n *\n * **Korean**: 자세 애니메이션 특성 설정\n *\n * Data-driven configuration for each stance's animation modifiers,\n * eliminating code duplication across stance mapping methods.\n *\n * @internal\n */\ninterface StanceAnimationConfig {\n /** Base duration multiplier (1.0 = normal) */\n readonly durationMultiplier: number;\n /** Impact frame offset from base */\n readonly impactFrameOffset: number;\n /** Recovery frames offset from base */\n readonly recoveryFrameOffset: number;\n /** Technique-specific overrides (optional) */\n readonly techniqueOverrides?: Partial<\n Record<\n TechniqueTypeCategory,\n {\n durationMultiplier?: number;\n impactFrameOffset?: number;\n recoveryFrameOffset?: number;\n }\n >\n >;\n}\n\n/**\n * Stance animation characteristics by trigram\n *\n * **Korean**: 팔괘 자세별 애니메이션 특성\n *\n * Each stance has unique timing characteristics reflecting its philosophy:\n * - ☰ 건 (Geon/Heaven): Direct, powerful - standard timing with technique variations\n * - ☱ 태 (Tae/Lake): Fluid, flowing - faster recovery\n * - ☲ 리 (Li/Fire): Precise, rapid - fastest overall\n * - ☳ 진 (Jin/Thunder): Explosive - fast attack, longer recovery\n * - ☴ 손 (Son/Wind): Continuous - slightly fast, mobile\n * - ☵ 감 (Gam/Water): Adaptive - slightly slower, standard recovery\n * - ☶ 간 (Gan/Mountain): Defensive - slowest, longest recovery\n * - ☷ 곤 (Gon/Earth): Grounding - standard with throw specialization\n */\nconst STANCE_ANIMATION_CONFIG: Record<TrigramStance, StanceAnimationConfig> = {\n [TrigramStance.GEON]: {\n durationMultiplier: 1.0,\n impactFrameOffset: 0,\n recoveryFrameOffset: 0,\n techniqueOverrides: {\n joint: { durationMultiplier: 1.2 },\n throw: {\n durationMultiplier: 1.5,\n impactFrameOffset: 4,\n recoveryFrameOffset: 5,\n },\n pressure_point: {\n durationMultiplier: 0.8,\n impactFrameOffset: -2,\n },\n },\n },\n [TrigramStance.TAE]: {\n durationMultiplier: 1.0,\n impactFrameOffset: 0,\n recoveryFrameOffset: -2,\n techniqueOverrides: {\n joint: { durationMultiplier: 1.3 },\n },\n },\n [TrigramStance.LI]: {\n durationMultiplier: 0.85,\n impactFrameOffset: -1,\n recoveryFrameOffset: -3,\n },\n [TrigramStance.JIN]: {\n durationMultiplier: 0.9,\n impactFrameOffset: 0,\n recoveryFrameOffset: 2,\n },\n [TrigramStance.SON]: {\n durationMultiplier: 0.95,\n impactFrameOffset: 0,\n recoveryFrameOffset: -1,\n },\n [TrigramStance.GAM]: {\n durationMultiplier: 1.1,\n impactFrameOffset: 1,\n recoveryFrameOffset: 0,\n },\n [TrigramStance.GAN]: {\n durationMultiplier: 1.2,\n impactFrameOffset: 2,\n recoveryFrameOffset: 3,\n },\n [TrigramStance.GON]: {\n durationMultiplier: 1.0,\n impactFrameOffset: 0,\n recoveryFrameOffset: 0,\n techniqueOverrides: {\n throw: {\n durationMultiplier: 1.6,\n impactFrameOffset: 3,\n recoveryFrameOffset: 4,\n },\n },\n },\n};\n\n/**\n * Comprehensive Technique Animation Mapper Class\n *\n * **Korean**: 기술 애니메이션 매퍼 클래스\n *\n * Provides O(1) lookup for all 1024 technique-stance combinations\n * with intelligent fallback system and build-time validation.\n *\n * @class\n */\nexport class TechniqueAnimationMapper {\n /** Primary animation mapping table */\n private readonly animationMap: Map<string, TechniqueAnimation>;\n\n /** Fallback animations by technique type */\n private readonly fallbackMap: Map<TechniqueTypeCategory, AnimationState>;\n\n /** Cache for generated combinations (validation) */\n private allCombinationsCache?: readonly TechniqueAnimationKey[];\n\n constructor() {\n this.animationMap = new Map();\n this.fallbackMap = this.initializeFallbacks();\n this.initializeCompleteMapping();\n }\n\n /**\n * Get animation for specific technique\n *\n * **Korean**: 특정 기술의 애니메이션 가져오기\n *\n * Uses 3-tier lookup strategy:\n * 1. Exact match (stance + type + part + intensity)\n * 2. Intensity-agnostic (stance + type + part + medium intensity)\n * 3. Technique type fallback (generic animation for technique type)\n *\n * @param key - Technique animation key\n * @returns Technique animation configuration\n *\n * @korean 애니메이션가져오기\n */\n public getAnimation(key: TechniqueAnimationKey): TechniqueAnimation {\n // Try exact match first\n const lookupKey = this.createLookupKey(key);\n const exactMatch = this.animationMap.get(lookupKey);\n if (exactMatch) {\n return exactMatch;\n }\n\n // Fallback: Try without intensity (use medium)\n const genericKey = this.createLookupKey({\n ...key,\n intensity: \"medium\",\n });\n const genericMatch = this.animationMap.get(genericKey);\n if (genericMatch) {\n return this.adjustForIntensity(genericMatch, key.intensity);\n }\n\n // Final fallback: Use technique type generic animation\n return this.getFallbackAnimation(key);\n }\n\n /**\n * Create composite lookup key from technique animation key\n *\n * **Korean**: 복합 조회 키 생성\n *\n * Format: \"stance-type-part-intensity\"\n * Example: \"geon-strike-head-heavy\"\n *\n * @param key - Technique animation key\n * @returns Composite lookup string\n *\n * @private\n */\n private createLookupKey(key: TechniqueAnimationKey): string {\n return `${key.stance}-${key.techniqueType}-${key.bodyPart}-${key.intensity}`;\n }\n\n /**\n * Initialize fallback animations by technique type\n *\n * **Korean**: 기술 유형별 대체 애니메이션 초기화\n *\n * @private\n */\n private initializeFallbacks(): Map<TechniqueTypeCategory, AnimationState> {\n return new Map([\n [\"strike\", AnimationState.ATTACK],\n [\"joint\", AnimationState.ATTACK],\n [\"throw\", AnimationState.ATTACK],\n [\"pressure_point\", AnimationState.ATTACK],\n ]);\n }\n\n /**\n * Initialize complete mapping table\n *\n * **Korean**: 전체 매핑 테이블 초기화\n *\n * Maps all 1024 combinations organized by:\n * - 8 stances\n * - 4 technique types\n * - 8 body parts\n * - 4 intensity levels\n *\n * Uses data-driven STANCE_ANIMATION_CONFIG to eliminate code duplication.\n *\n * @private\n */\n private initializeCompleteMapping(): void {\n const bodyParts = Object.values(BodyPart);\n const intensities: TechniqueIntensity[] = [\n \"light\",\n \"medium\",\n \"heavy\",\n \"critical\",\n ];\n const techniqueTypes: TechniqueTypeCategory[] = [\n \"strike\",\n \"joint\",\n \"throw\",\n \"pressure_point\",\n ];\n\n // Map all 8 trigram stances using configuration\n Object.values(TrigramStance).forEach((stance) => {\n const config = STANCE_ANIMATION_CONFIG[stance];\n\n bodyParts.forEach((bodyPart) => {\n intensities.forEach((intensity) => {\n techniqueTypes.forEach((techniqueType) => {\n // Get base values with technique-specific overrides\n const override = config.techniqueOverrides?.[techniqueType];\n const durationMult =\n override?.durationMultiplier ?? config.durationMultiplier;\n const impactOffset =\n override?.impactFrameOffset ?? config.impactFrameOffset;\n const recoveryOffset =\n override?.recoveryFrameOffset ?? config.recoveryFrameOffset;\n\n this.mapTechnique(\n { stance, techniqueType, bodyPart, intensity },\n {\n animationState: AnimationState.ATTACK,\n duration:\n this.getDurationForIntensity(intensity) * durationMult,\n impactFrame:\n this.getImpactFrameForIntensity(intensity) + impactOffset,\n recoveryFrames:\n this.getRecoveryFramesForIntensity(intensity) +\n recoveryOffset,\n priority: AnimationPriority.ATTACK,\n koreanName: this.generateKoreanName(\n stance,\n techniqueType,\n bodyPart,\n intensity,\n ),\n englishName: this.generateEnglishName(\n stance,\n techniqueType,\n bodyPart,\n intensity,\n ),\n },\n );\n });\n });\n });\n });\n }\n /**\n * Add single technique mapping to the map with automatic rotation calculation\n *\n * **Korean**: 단일 기술 매핑 추가\n *\n * @private\n */\n private mapTechnique(\n key: TechniqueAnimationKey,\n animation: TechniqueAnimation,\n ): void {\n // Calculate rotation properties if not provided\n const torsoRotation =\n animation.torsoRotation ??\n this.getTorsoRotationForStanceTechnique(key.stance, key.techniqueType);\n const hipEngagement =\n animation.hipEngagement ??\n this.getHipEngagementForStanceTechnique(\n key.stance,\n key.techniqueType,\n key.intensity,\n );\n const powerModifier =\n animation.powerModifier ??\n this.calculatePowerModifier(hipEngagement, key.techniqueType);\n\n // Create complete animation with rotation properties\n const completeAnimation: TechniqueAnimation = {\n ...animation,\n torsoRotation,\n hipEngagement,\n powerModifier,\n };\n\n const lookupKey = this.createLookupKey(key);\n this.animationMap.set(lookupKey, completeAnimation);\n }\n\n /**\n * Get duration based on intensity level\n *\n * **Korean**: 강도 레벨에 따른 지속시간 가져오기\n *\n * @private\n */\n private getDurationForIntensity(intensity: TechniqueIntensity): number {\n const baseDuration = 0.6; // 600ms base\n switch (intensity) {\n case \"light\":\n return baseDuration * 0.7; // 420ms\n case \"medium\":\n return baseDuration; // 600ms\n case \"heavy\":\n return baseDuration * 1.3; // 780ms\n case \"critical\":\n return baseDuration * 1.6; // 960ms\n }\n }\n\n /**\n * Get impact frame based on intensity level\n *\n * **Korean**: 강도 레벨에 따른 충격 프레임 가져오기\n *\n * @private\n */\n private getImpactFrameForIntensity(intensity: TechniqueIntensity): number {\n switch (intensity) {\n case \"light\":\n return 8; // Frame 8 at 60fps\n case \"medium\":\n return 10; // Frame 10\n case \"heavy\":\n return 14; // Frame 14\n case \"critical\":\n return 18; // Frame 18\n }\n }\n\n /**\n * Get recovery frames based on intensity level\n *\n * **Korean**: 강도 레벨에 따른 회복 프레임 가져오기\n *\n * @private\n */\n private getRecoveryFramesForIntensity(intensity: TechniqueIntensity): number {\n switch (intensity) {\n case \"light\":\n return 8; // 8 frames recovery\n case \"medium\":\n return 12; // 12 frames recovery\n case \"heavy\":\n return 18; // 18 frames recovery\n case \"critical\":\n return 24; // 24 frames recovery\n }\n }\n\n /**\n * Calculate torso rotation for stance-technique combination\n *\n * **Korean**: 자세-기술 조합의 허리 회전 계산\n *\n * Returns rotation in radians (-π/2 to π/2)\n *\n * @private\n */\n private getTorsoRotationForStanceTechnique(\n stance: string,\n techniqueType: TechniqueTypeCategory,\n ): number {\n // Stance-specific base rotations (in radians)\n const stanceRotations: Record<string, number> = {\n [TrigramStance.GEON]: Math.PI / 6, // 30° - Direct, moderate rotation\n [TrigramStance.TAE]: Math.PI / 18, // 10° - Minimal rotation, fluid\n [TrigramStance.LI]: Math.PI / 9, // 20° - Quick snap rotation\n [TrigramStance.JIN]: Math.PI / 4, // 45° - Wide explosive rotation\n [TrigramStance.SON]: Math.PI / 12, // 15° - Continuous adaptive flow\n [TrigramStance.GAM]: Math.PI / 8, // 22.5° - Circular wave motion\n [TrigramStance.GAN]: Math.PI / 36, // 5° - Stable, minimal rotation\n [TrigramStance.GON]: Math.PI / 3, // 60° - Deep grounded rotation\n };\n\n const baseRotation = stanceRotations[stance] ?? 0;\n\n // Technique type modifiers\n const techniqueMultipliers: Record<TechniqueTypeCategory, number> = {\n strike: 1.2, // 20% more rotation for strikes\n joint: 0.7, // 30% less for joint locks\n throw: 1.5, // 50% more for throws\n pressure_point: 0.8, // 20% less for precision strikes\n };\n\n const multiplier = techniqueMultipliers[techniqueType] ?? 1.0;\n return Math.min(Math.PI / 2, baseRotation * multiplier); // Clamp to ±90°\n }\n\n /**\n * Calculate hip engagement for stance-technique combination\n *\n * **Korean**: 자세-기술 조합의 골반 참여도 계산\n *\n * Returns engagement factor (0-1)\n *\n * @private\n */\n private getHipEngagementForStanceTechnique(\n stance: string,\n techniqueType: TechniqueTypeCategory,\n intensity: TechniqueIntensity,\n ): number {\n // Stance-specific base hip engagement\n const stanceEngagement: Record<string, number> = {\n [TrigramStance.GEON]: 0.9, // High engagement - direct force\n [TrigramStance.TAE]: 0.5, // Moderate - fluid movement\n [TrigramStance.LI]: 0.7, // Good - rapid techniques\n [TrigramStance.JIN]: 1.0, // Maximum - explosive power\n [TrigramStance.SON]: 0.6, // Moderate - continuous pressure\n [TrigramStance.GAM]: 0.7, // Good - adaptive flow\n [TrigramStance.GAN]: 0.3, // Low - stable defensive\n [TrigramStance.GON]: 0.95, // Very high - grounding techniques\n };\n\n const baseEngagement = stanceEngagement[stance] ?? 0.6;\n\n // Technique type modifiers\n const techniqueMultipliers: Record<TechniqueTypeCategory, number> = {\n strike: 1.0, // Full engagement for strikes\n joint: 0.6, // Lower for joint manipulation\n throw: 1.1, // Highest for throws\n pressure_point: 0.7, // Moderate for precision\n };\n\n // Intensity modifiers\n const intensityMultipliers: Record<TechniqueIntensity, number> = {\n light: 0.7,\n medium: 0.9,\n heavy: 1.0,\n critical: 1.1,\n };\n\n const engagement =\n baseEngagement *\n techniqueMultipliers[techniqueType] *\n intensityMultipliers[intensity];\n\n return Math.min(1.0, Math.max(0.0, engagement)); // Clamp to 0-1\n }\n\n /**\n * Calculate power modifier from hip engagement\n *\n * **Korean**: 골반 참여도로부터 파워 배율 계산\n *\n * Based on PR #1132 calculateHipRotationPowerModifier system\n *\n * @private\n */\n private calculatePowerModifier(\n hipEngagement: number,\n techniqueType: TechniqueTypeCategory,\n ): number {\n // Base power curve: 1.0 + (engagement * maxBonus)\n const maxBonusByType: Record<TechniqueTypeCategory, number> = {\n strike: 0.3, // 30% max bonus for strikes\n joint: 0.1, // 10% for joint locks\n throw: 0.2, // 20% for throws\n pressure_point: 0.25, // 25% for pressure points\n };\n\n const maxBonus = maxBonusByType[techniqueType] ?? 0.2;\n return 1.0 + hipEngagement * maxBonus;\n }\n\n /**\n * Generate Korean technique name\n *\n * **Korean**: 한글 기술 이름 생성\n *\n * Format: \"스탠스 신체부위 강도 기술유형\"\n * Example: \"건괘 두부 강 타격\"\n *\n * @private\n */\n private generateKoreanName(\n stance: string,\n techniqueType: TechniqueTypeCategory,\n bodyPart: string,\n intensity: TechniqueIntensity,\n ): string {\n const stanceName = STANCE_KOREAN[stance] ?? stance;\n const bodyPartName = BODY_PART_KOREAN[bodyPart] ?? bodyPart;\n const techniqueName = TECHNIQUE_TYPE_KOREAN[techniqueType] ?? techniqueType;\n const intensityName = this.getIntensityKorean(intensity);\n\n return `${stanceName} ${bodyPartName} ${intensityName} ${techniqueName}`;\n }\n\n /**\n * Generate English technique name\n *\n * Format: \"Stance BodyPart Intensity TechniqueType\"\n * Example: \"Heaven Head Heavy Strike\"\n *\n * @private\n */\n private generateEnglishName(\n stance: string,\n techniqueType: TechniqueTypeCategory,\n bodyPart: string,\n intensity: TechniqueIntensity,\n ): string {\n const stanceName = STANCE_ENGLISH[stance] ?? stance;\n const bodyPartName = BODY_PART_ENGLISH[bodyPart] ?? bodyPart;\n const techniqueName =\n TECHNIQUE_TYPE_ENGLISH[techniqueType] ?? techniqueType;\n const intensityName =\n intensity.charAt(0).toUpperCase() + intensity.slice(1);\n\n return `${stanceName} ${bodyPartName} ${intensityName} ${techniqueName}`;\n }\n\n /**\n * Get Korean intensity name\n *\n * @private\n */\n private getIntensityKorean(intensity: TechniqueIntensity): string {\n switch (intensity) {\n case \"light\":\n return \"경\";\n case \"medium\":\n return \"중\";\n case \"heavy\":\n return \"강\";\n case \"critical\":\n return \"극\";\n }\n }\n\n /**\n * Adjust animation for different intensity\n *\n * **Korean**: 강도에 따른 애니메이션 조정\n *\n * @private\n */\n private adjustForIntensity(\n animation: TechniqueAnimation,\n intensity: TechniqueIntensity,\n ): TechniqueAnimation {\n const durationMultiplier =\n this.getDurationMultiplierForIntensity(intensity);\n\n return {\n ...animation,\n duration: animation.duration * durationMultiplier,\n impactFrame: Math.round(animation.impactFrame * durationMultiplier),\n recoveryFrames: Math.round(animation.recoveryFrames * durationMultiplier),\n };\n }\n\n /**\n * Get duration multiplier for intensity\n *\n * @private\n */\n private getDurationMultiplierForIntensity(\n intensity: TechniqueIntensity,\n ): number {\n switch (intensity) {\n case \"light\":\n return 0.7;\n case \"medium\":\n return 1.0;\n case \"heavy\":\n return 1.3;\n case \"critical\":\n return 1.6;\n }\n }\n\n /**\n * Get fallback animation when no exact match\n *\n * **Korean**: 일치하는 항목이 없을 때 대체 애니메이션 가져오기\n *\n * @private\n */\n private getFallbackAnimation(key: TechniqueAnimationKey): TechniqueAnimation {\n const fallbackState =\n this.fallbackMap.get(key.techniqueType) ?? AnimationState.ATTACK;\n\n return {\n animationState: fallbackState,\n duration: this.getDurationForIntensity(key.intensity),\n impactFrame: this.getImpactFrameForIntensity(key.intensity),\n recoveryFrames: this.getRecoveryFramesForIntensity(key.intensity),\n priority: AnimationPriority.ATTACK,\n koreanName: \"일반 기술\",\n englishName: \"Generic Technique\",\n };\n }\n\n /**\n * Generate all possible technique combinations\n *\n * **Korean**: 모든 가능한 기술 조합 생성\n *\n * @private\n */\n private generateAllCombinations(): readonly TechniqueAnimationKey[] {\n if (this.allCombinationsCache) {\n return this.allCombinationsCache;\n }\n\n const stances = Object.values(TrigramStance);\n const techniqueTypes: TechniqueTypeCategory[] = [\n \"strike\",\n \"joint\",\n \"throw\",\n \"pressure_point\",\n ];\n const bodyParts = Object.values(BodyPart);\n const intensities: TechniqueIntensity[] = [\n \"light\",\n \"medium\",\n \"heavy\",\n \"critical\",\n ];\n\n const combinations: TechniqueAnimationKey[] = [];\n\n stances.forEach((stance) => {\n techniqueTypes.forEach((techniqueType) => {\n bodyParts.forEach((bodyPart) => {\n intensities.forEach((intensity) => {\n combinations.push({\n stance,\n techniqueType,\n bodyPart,\n intensity,\n });\n });\n });\n });\n });\n\n this.allCombinationsCache = combinations;\n return combinations;\n }\n\n /**\n * Validate mapping completeness at build time\n *\n * **Korean**: 빌드 시간에 매핑 완전성 검증\n *\n * Reports coverage percentage and lists missing mappings.\n * Expected: 8 stances × 4 technique types × 8 body parts × 4 intensities = 1024 combinations\n *\n * @returns Validation result with coverage and missing mappings\n *\n * @korean 완전성검증\n */\n public validateCompleteness(): MappingValidationResult {\n const allCombinations = this.generateAllCombinations();\n const missing: TechniqueAnimationKey[] = [];\n\n allCombinations.forEach((combo) => {\n const key = this.createLookupKey(combo);\n if (!this.animationMap.has(key)) {\n missing.push(combo);\n }\n });\n\n const mapped = allCombinations.length - missing.length;\n const coverage = (mapped / allCombinations.length) * 100;\n\n return {\n coverage,\n total: allCombinations.length,\n mapped,\n missing,\n };\n }\n\n /**\n * Get total number of mapped combinations\n *\n * **Korean**: 매핑된 조합의 총 개수 가져오기\n *\n * @returns Number of mapped combinations\n *\n */\n public getMappedCount(): number {\n return this.animationMap.size;\n }\n}\n\n/**\n * Singleton instance of TechniqueAnimationMapper\n *\n * **Korean**: 기술 애니메이션 매퍼 싱글톤 인스턴스\n *\n * Use this instance throughout the application for consistent\n * technique animation mapping.\n *\n * @korean 싱글톤인스턴스\n */\nexport const techniqueAnimationMapper = new TechniqueAnimationMapper();\n"],"mappings":"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"}
@@ -37,7 +37,6 @@ import type { StanceLaterality, StanceWithSide } from "../../trigram/types";
37
37
  *
38
38
  * Contains all animation types for a specific stance with laterality.
39
39
  *
40
- * @public
41
40
  * @category Animation Mapping
42
41
  * @korean 자세애니메이션모음
43
42
  */
@@ -88,7 +87,6 @@ export interface StanceAnimationCollection {
88
87
  * // tae.attacks are left-handed versions
89
88
  * ```
90
89
  *
91
- * @public
92
90
  * @category Animation Mapping
93
91
  * @korean 자세애니메이션가져오기
94
92
  */
@@ -112,7 +110,6 @@ export declare function getAnimationsForStance(stanceOrSide: TrigramStance | Sta
112
110
  * const gan = getGuardPoseForStanceWithSide("gan"); // Defaults to right
113
111
  * ```
114
112
  *
115
- * @public
116
113
  * @category Animation Mapping
117
114
  * @korean 자세방어포즈가져오기
118
115
  */
@@ -138,7 +135,6 @@ export declare function getGuardPoseForStanceWithSide(stanceOrSide: TrigramStanc
138
135
  * console.log(allPoses.size); // 16 (8 stances × 2 laterality)
139
136
  * ```
140
137
  *
141
- * @public
142
138
  * @category Animation Mapping
143
139
  * @korean 모든방어포즈가져오기
144
140
  */
@@ -164,7 +160,6 @@ export declare function getAllGuardPoses(): Map<string, StanceGuardPose>;
164
160
  * // Returns 3 right-handed Lake stance attacks (default)
165
161
  * ```
166
162
  *
167
- * @public
168
163
  * @category Animation Mapping
169
164
  * @korean 공격애니메이션가져오기
170
165
  */
@@ -187,7 +182,6 @@ export declare function getAttackAnimations(stanceOrSide: TrigramStance | Stance
187
182
  * // Returns 2 left-handed Water stance defensive moves
188
183
  * ```
189
184
  *
190
- * @public
191
185
  * @category Animation Mapping
192
186
  * @korean 방어애니메이션가져오기
193
187
  */
@@ -210,7 +204,6 @@ export declare function getDefensiveAnimations(stanceOrSide: TrigramStance | Sta
210
204
  * const taeWalk = getWalkAnimation("tae"); // Defaults to right
211
205
  * ```
212
206
  *
213
- * @public
214
207
  * @category Animation Mapping
215
208
  * @korean 걷기애니메이션가져오기
216
209
  */
@@ -233,7 +226,6 @@ export declare function getWalkAnimation(stanceOrSide: TrigramStance | StanceWit
233
226
  * const ganRun = getRunAnimation("gan"); // Defaults to right
234
227
  * ```
235
228
  *
236
- * @public
237
229
  * @category Animation Mapping
238
230
  * @korean 달리기애니메이션가져오기
239
231
  */
@@ -243,7 +235,6 @@ export declare function getRunAnimation(stanceOrSide: TrigramStance | StanceWith
243
235
  *
244
236
  * **Korean**: 매핑 통계
245
237
  *
246
- * @public
247
238
  * @category Animation Mapping
248
239
  * @korean 매핑통계
249
240
  */
@@ -278,7 +269,6 @@ export interface AnimationMappingStats {
278
269
  * console.log(`Total attacks: ${stats.totalAttacks}`); // 8 × 5 × 2 = 80
279
270
  * ```
280
271
  *
281
- * @public
282
272
  * @category Animation Mapping
283
273
  * @korean 매핑통계가져오기
284
274
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TrigramAnimationMapping.d.ts","sourceRoot":"","sources":["../../../../src/systems/animation/core/TrigramAnimationMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAiB5E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,yBAAyB;IACxC,iCAAiC;IACjC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,qBAAqB;IACrB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,oBAAoB;IACpB,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,yBAAyB,GAAG,SAAS,CAwDvC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,eAAe,GAAG,SAAS,CAW7B;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAE/D;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,SAAS,iBAAiB,EAAE,CAmB9B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,SAAS,iBAAiB,EAAE,CAmB9B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,iBAAiB,GAAG,SAAS,CAqB/B;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,iBAAiB,GAAG,SAAS,CAqB/B;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,qBAAqB;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,qCAAqC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,mCAAmC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,sCAAsC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAahE"}
1
+ {"version":3,"file":"TrigramAnimationMapping.d.ts","sourceRoot":"","sources":["../../../../src/systems/animation/core/TrigramAnimationMapping.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAiB5E;;;;;;;;;GASG;AACH,MAAM,WAAW,yBAAyB;IACxC,iCAAiC;IACjC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,uCAAuC;IACvC,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,0CAA0C;IAC1C,QAAQ,CAAC,SAAS,EAAE,SAAS,iBAAiB,EAAE,CAAC;IACjD,qBAAqB;IACrB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,oBAAoB;IACpB,QAAQ,CAAC,GAAG,EAAE,iBAAiB,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,yBAAyB,GAAG,SAAS,CAwDvC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,6BAA6B,CAC3C,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,eAAe,GAAG,SAAS,CAW7B;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAE/D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,mBAAmB,CACjC,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,SAAS,iBAAiB,EAAE,CAmB9B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,sBAAsB,CACpC,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,SAAS,iBAAiB,EAAE,CAmB9B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,iBAAiB,GAAG,SAAS,CAqB/B;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,eAAe,CAC7B,YAAY,EAAE,aAAa,GAAG,cAAc,EAC5C,iBAAiB,GAAE,gBAA0B,GAC5C,iBAAiB,GAAG,SAAS,CAqB/B;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,qBAAqB;IACpC,2EAA2E;IAC3E,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,qCAAqC;IACrC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,mCAAmC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,sCAAsC;IACtC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;IACpC,mFAAmF;IACnF,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,wFAAwF;IACxF,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;CACjC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,wBAAwB,IAAI,qBAAqB,CAahE"}
@@ -52,7 +52,6 @@ export declare const TRIGRAM_STANCES_ORDER: readonly TrigramStance[];
52
52
  * calculateTransitionDuration(TrigramStance.GEON, TrigramStance.GEON); // 0.3 (laterality change)
53
53
  * ```
54
54
  *
55
- * @public
56
55
  * @category Trigram System
57
56
  * @korean 전환시간계산
58
57
  */
@@ -98,7 +97,6 @@ export declare function calculateTransitionDuration(from: TrigramStance, to: Tri
98
97
  * );
99
98
  * ```
100
99
  *
101
- * @public
102
100
  * @category Trigram System
103
101
  * @korean 팔괘자세전환
104
102
  */
@@ -1 +1 @@
1
- {"version":3,"file":"TrigramStanceTransitions.d.ts","sourceRoot":"","sources":["../../../../src/systems/animation/core/TrigramStanceTransitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI5D;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,aAAa,EAShD,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,aAAa,GAChB,MAAM,CA2BR;AAsCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,gBAAgB,GAC3B,iBAAiB,CA8QnB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAa,CAAC;AAE5E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAWlD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,gBAAgB,GAC3B,iBAAiB,GAAG,SAAS,CAG/B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kCAAkC,IAAI,IAAI,CAIzD"}
1
+ {"version":3,"file":"TrigramStanceTransitions.d.ts","sourceRoot":"","sources":["../../../../src/systems/animation/core/TrigramStanceTransitions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAI5D;;;;;;;;;GASG;AACH,eAAO,MAAM,qBAAqB,EAAE,SAAS,aAAa,EAShD,CAAC;AAEX;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,aAAa,GAChB,MAAM,CA2BR;AAsCD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CG;AACH,wBAAgB,wBAAwB,CACtC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,gBAAgB,GAC3B,iBAAiB,CA8QnB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,kBAAkB,EAAE,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAa,CAAC;AAE5E;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAWlD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,aAAa,EACnB,EAAE,EAAE,aAAa,EACjB,UAAU,EAAE,gBAAgB,GAC3B,iBAAiB,GAAG,SAAS,CAG/B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,kCAAkC,IAAI,IAAI,CAIzD"}
@@ -21,7 +21,6 @@
21
21
  * - Stance transitions: 36 frames (600ms at 60fps)
22
22
  * - Tactical steps: 18 frames (300ms at 60fps, 30cm distance)
23
23
  *
24
- * @public
25
24
  * @korean 애니메이션상태
26
25
  */
27
26
  export declare enum AnimationState {
@@ -387,7 +386,6 @@ export declare enum AnimationState {
387
386
  * to tactical repositioning in Korean martial arts.
388
387
  * Recovery animations have highest priority to allow getting up from ground.
389
388
  *
390
- * @public
391
389
  * @korean 애니메이션우선순위
392
390
  */
393
391
  export declare enum AnimationPriority {
@@ -412,7 +410,6 @@ export declare const STEP_PRIORITY = AnimationPriority.ATTACK;
412
410
  * - guard_break: 방어붕괴 (bangeo bunggoe) - Guard break, defensive stance destroyed
413
411
  * - guard_recovery: 방어복구 (bangeo bokgu) - Guard recovery, restore defensive posture
414
412
  *
415
- * @public
416
413
  * @korean 방어애니메이션타입
417
414
  */
418
415
  export type DefensiveAnimationType = "block_success" | "parry_deflect" | "guard_break" | "guard_recovery";
@@ -430,7 +427,6 @@ export type DefensiveAnimationType = "block_success" | "parry_deflect" | "guard_
430
427
  * - Guard Break: 15 frames (250ms)
431
428
  * - Guard Recovery: 12 frames (200ms)
432
429
  *
433
- * @public
434
430
  * @korean 애니메이션설정
435
431
  */
436
432
  export interface AnimationConfig {
@@ -506,7 +502,6 @@ export type MutableAnimationConfig = {
506
502
  /**
507
503
  * Animation event callback types
508
504
  *
509
- * @public
510
505
  * @korean 애니메이션이벤트
511
506
  */
512
507
  export interface AnimationEvents {
@@ -534,7 +529,6 @@ export interface AnimationEvents {
534
529
  /**
535
530
  * Animation state machine state
536
531
  *
537
- * @public
538
532
  * @korean 애니메이션상태머신상태
539
533
  */
540
534
  export interface AnimationMachineState {
@@ -567,7 +561,6 @@ export interface AnimationMachineState {
567
561
  /**
568
562
  * Animation transition rule
569
563
  *
570
- * @public
571
564
  * @korean 애니메이션전환규칙
572
565
  */
573
566
  export interface TransitionRule {
@@ -595,7 +588,6 @@ export interface TransitionRule {
595
588
  /**
596
589
  * Result of an animation update
597
590
  *
598
- * @public
599
591
  * @korean 애니메이션업데이트결과
600
592
  */
601
593
  export interface AnimationUpdateResult {
@@ -641,7 +633,6 @@ export interface AnimationUpdateResult {
641
633
  * Each step moves exactly 30cm (one foot width) for tactical repositioning
642
634
  * in Korean martial arts combat.
643
635
  *
644
- * @public
645
636
  * @korean 발걸음방향
646
637
  */
647
638
  export type StepDirection = "forward" | "back" | "left" | "right" | "forward_left" | "forward_right" | "back_left" | "back_right";
@@ -655,7 +646,6 @@ export type StepDirection = "forward" | "back" | "left" | "right" | "forward_lef
655
646
  * - 30cm distance movement
656
647
  * - 300ms duration (18 frames at 60fps)
657
648
  *
658
- * @public
659
649
  * @korean 발걸음애니메이션설정
660
650
  */
661
651
  export interface StepConfig extends AnimationConfig {
@@ -686,7 +676,6 @@ export interface StepConfig extends AnimationConfig {
686
676
  * Defines weight distribution, foot positions, and body center of gravity
687
677
  * at specific frames during the step animation.
688
678
  *
689
- * @public
690
679
  * @korean 발걸음키프레임
691
680
  */
692
681
  export interface StepKeyframe {
@@ -733,7 +722,6 @@ export interface StepKeyframe {
733
722
  * - side_left: 좌측낙법 (Jwacheuk Nakbeop) - Left side falling technique
734
723
  * - side_right: 우측낙법 (Ucheuk Nakbeop) - Right side falling technique
735
724
  *
736
- * @public
737
725
  * @korean 낙법유형
738
726
  */
739
727
  export type FallType = "forward" | "backward" | "side_left" | "side_right";
@@ -749,28 +737,24 @@ export type FallType = "forward" | "backward" | "side_left" | "side_right";
749
737
  * - side_left: 좌측와 (Jwacheuk Wa) - Left side position
750
738
  * - side_right: 우측와 (Ucheuk Wa) - Right side position
751
739
  *
752
- * @public
753
740
  * @korean 지면자세
754
741
  */
755
742
  export type GroundState = "prone" | "supine" | "side_left" | "side_right";
756
743
  /**
757
744
  * Maps fall types to corresponding ground states
758
745
  *
759
- * @public
760
746
  * @korean 낙법지면맵
761
747
  */
762
748
  export declare const FALL_TO_GROUND_MAP: Record<FallType, GroundState>;
763
749
  /**
764
750
  * Maps fall types to corresponding animation states
765
751
  *
766
- * @public
767
752
  * @korean 낙법애니메이션맵
768
753
  */
769
754
  export declare const FALL_TYPE_TO_ANIMATION: Record<FallType, AnimationState>;
770
755
  /**
771
756
  * Maps ground states to corresponding animation states
772
757
  *
773
- * @public
774
758
  * @korean 지면애니메이션맵
775
759
  */
776
760
  export declare const GROUND_STATE_TO_ANIMATION: Record<GroundState, AnimationState>;
@@ -789,7 +773,6 @@ export declare const GROUND_STATE_TO_ANIMATION: Record<GroundState, AnimationSta
789
773
  * - 머리추적 (Meori Chujok) - Head tracking
790
774
  * - 180도회전 (180-do Hoejeon) - 180-degree turn
791
775
  *
792
- * @public
793
776
  * @korean 몸향하기상태
794
777
  */
795
778
  export interface BodyFacing {
@@ -883,7 +866,6 @@ export interface BodyFacing {
883
866
  * - 상체비틀기 (Sangchebiteulgi) - Upper body twist
884
867
  * - 골반고정 (Golbangojeong) - Hip stabilization
885
868
  *
886
- * @public
887
869
  * @korean 허리회전상태
888
870
  */
889
871
  export interface TorsoRotationState {
@@ -931,14 +913,12 @@ export interface TorsoRotationState {
931
913
  * - Slide: Maintaining stable base while advancing/retreating
932
914
  * - Shuffle: Fine-tuning position without commitment
933
915
  *
934
- * @public
935
916
  * @korean 보법유형
936
917
  */
937
918
  export type FootworkPattern = "circular" | "pivot" | "slide" | "shuffle";
938
919
  /**
939
920
  * Footwork direction for directional patterns
940
921
  *
941
- * @public
942
922
  * @korean 보법방향
943
923
  */
944
924
  export type FootworkDirection = "left" | "right" | "forward" | "back";
@@ -948,7 +928,6 @@ export type FootworkDirection = "left" | "right" | "forward" | "back";
948
928
  * Maps each footwork pattern to its Korean martial arts terminology
949
929
  * with romanization and English translation.
950
930
  *
951
- * @public
952
931
  * @korean 보법한글용어
953
932
  */
954
933
  export declare const FOOTWORK_KOREAN_TERMS: Record<FootworkPattern, {
@@ -965,7 +944,6 @@ export declare const FOOTWORK_KOREAN_TERMS: Record<FootworkPattern, {
965
944
  * - roll: 회전기상 (Hoejeon Gisang) - Roll recovery
966
945
  * - defensive: 방어기상 (Bangeo Gisang) - Defensive getup
967
946
  *
968
- * @public
969
947
  * @korean 회복애니메이션유형
970
948
  */
971
949
  export type RecoveryAnimationType = "prone_standup" | "supine_standup" | "roll_recovery" | "defensive_getup";
@@ -975,7 +953,6 @@ export type RecoveryAnimationType = "prone_standup" | "supine_standup" | "roll_r
975
953
  * Maps each recovery type to its Korean martial arts terminology
976
954
  * with romanization and English translation.
977
955
  *
978
- * @public
979
956
  * @korean 회복한글용어
980
957
  */
981
958
  export declare const RECOVERY_KOREAN_TERMS: Record<RecoveryAnimationType, {
@@ -986,14 +963,12 @@ export declare const RECOVERY_KOREAN_TERMS: Record<RecoveryAnimationType, {
986
963
  /**
987
964
  * Maps ground states to their default recovery animation
988
965
  *
989
- * @public
990
966
  * @korean 지면회복맵
991
967
  */
992
968
  export declare const GROUND_STATE_TO_RECOVERY: Record<GroundState, RecoveryAnimationType>;
993
969
  /**
994
970
  * Maps recovery types to their animation states
995
971
  *
996
- * @public
997
972
  * @korean 회복애니메이션맵
998
973
  */
999
974
  export declare const RECOVERY_TYPE_TO_ANIMATION: Record<RecoveryAnimationType, AnimationState>;
@@ -1008,7 +983,6 @@ export declare const RECOVERY_TYPE_TO_ANIMATION: Record<RecoveryAnimationType, A
1008
983
  * - heavy: Powerful techniques (0.8x speed), high damage
1009
984
  * - critical: Maximum power (0.6x speed), critical damage
1010
985
  *
1011
- * @public
1012
986
  * @category Animation
1013
987
  * @korean 기술강도
1014
988
  */
@@ -1024,7 +998,6 @@ export type TechniqueIntensity = "light" | "medium" | "heavy" | "critical";
1024
998
  * - throw: Throwing and sweeping techniques
1025
999
  * - pressure_point: Precise vital point strikes
1026
1000
  *
1027
- * @public
1028
1001
  * @category Combat
1029
1002
  * @korean 기술타입
1030
1003
  */
@@ -1047,7 +1020,6 @@ export type TechniqueTypeCategory = "strike" | "joint" | "throw" | "pressure_poi
1047
1020
  * };
1048
1021
  * ```
1049
1022
  *
1050
- * @public
1051
1023
  * @category Animation
1052
1024
  * @korean 기술애니메이션키
1053
1025
  */
@@ -1082,7 +1054,6 @@ export interface TechniqueAnimationKey {
1082
1054
  * };
1083
1055
  * ```
1084
1056
  *
1085
- * @public
1086
1057
  * @category Animation
1087
1058
  * @korean 기술애니메이션
1088
1059
  */
@@ -1147,7 +1118,6 @@ export interface TechniqueAnimation {
1147
1118
  * Reports coverage percentage and lists any missing mappings
1148
1119
  * that need to be filled in.
1149
1120
  *
1150
- * @public
1151
1121
  * @category Animation
1152
1122
  * @korean 매핑검증결과
1153
1123
  */
@@ -1178,7 +1148,6 @@ export interface MappingValidationResult {
1178
1148
  * const invalid = stringToAnimationState("invalid"); // null
1179
1149
  * ```
1180
1150
  *
1181
- * @public
1182
1151
  * @korean 문자열을애니메이션상태로변환
1183
1152
  */
1184
1153
  export declare function stringToAnimationState(state: string): AnimationState | null;
@@ -1200,7 +1169,6 @@ export declare function stringToAnimationState(state: string): AnimationState |
1200
1169
  * }
1201
1170
  * ```
1202
1171
  *
1203
- * @public
1204
1172
  * @korean 유효한애니메이션상태확인
1205
1173
  */
1206
1174
  export declare function isValidAnimationState(value: unknown): value is AnimationState;
@@ -1222,7 +1190,6 @@ export declare function isValidAnimationState(value: unknown): value is Animatio
1222
1190
  * });
1223
1191
  * ```
1224
1192
  *
1225
- * @public
1226
1193
  * @korean 모든애니메이션상태가져오기
1227
1194
  */
1228
1195
  export declare function getAllAnimationStates(): AnimationState[];
@@ -1244,7 +1211,6 @@ export declare function getAllAnimationStates(): AnimationState[];
1244
1211
  * }
1245
1212
  * ```
1246
1213
  *
1247
- * @public
1248
1214
  * @korean 자세방어상태확인
1249
1215
  */
1250
1216
  export declare function isStanceGuardState(state: AnimationState): boolean;
@@ -1266,7 +1232,6 @@ export declare function isStanceGuardState(state: AnimationState): boolean;
1266
1232
  * }
1267
1233
  * ```
1268
1234
  *
1269
- * @public
1270
1235
  * @korean 발걸음상태확인
1271
1236
  */
1272
1237
  export declare function isStepState(state: AnimationState): boolean;
@@ -1288,7 +1253,6 @@ export declare function isStepState(state: AnimationState): boolean;
1288
1253
  * }
1289
1254
  * ```
1290
1255
  *
1291
- * @public
1292
1256
  * @korean 보법상태확인
1293
1257
  */
1294
1258
  export declare function isFootworkState(state: AnimationState): boolean;
@@ -1309,7 +1273,6 @@ export declare function isFootworkState(state: AnimationState): boolean;
1309
1273
  * }
1310
1274
  * ```
1311
1275
  *
1312
- * @public
1313
1276
  * @korean 낙법상태확인
1314
1277
  */
1315
1278
  export declare function isFallState(state: AnimationState): boolean;
@@ -1331,7 +1294,6 @@ export declare function isFallState(state: AnimationState): boolean;
1331
1294
  * }
1332
1295
  * ```
1333
1296
  *
1334
- * @public
1335
1297
  * @korean 지면상태확인
1336
1298
  */
1337
1299
  export declare function isGroundState(state: AnimationState): boolean;
@@ -1353,7 +1315,6 @@ export declare function isGroundState(state: AnimationState): boolean;
1353
1315
  * }
1354
1316
  * ```
1355
1317
  *
1356
- * @public
1357
1318
  * @korean 회복상태확인
1358
1319
  */
1359
1320
  export declare function isRecoveryState(state: AnimationState): boolean;