blacktrigram 0.7.44 → 0.7.47

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 (746) 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/index.d.ts.map +1 -1
  6. package/lib/audio/index.js.map +1 -1
  7. package/lib/audio/types.d.ts +18 -2
  8. package/lib/audio/types.d.ts.map +1 -1
  9. package/lib/audio/types.js +1 -0
  10. package/lib/audio/types.js.map +1 -1
  11. package/lib/components/effects/WindParticles3D.d.ts.map +1 -1
  12. package/lib/components/index.d.ts.map +1 -1
  13. package/lib/components/index.js.map +1 -1
  14. package/lib/components/screens/combat/CombatScreen3D.d.ts.map +1 -1
  15. package/lib/components/screens/combat/CombatScreen3D.js.map +1 -1
  16. package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts +0 -1
  17. package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts.map +1 -1
  18. package/lib/components/screens/combat/components/controls/KeyboardHints.js +0 -1
  19. package/lib/components/screens/combat/components/controls/KeyboardHints.js.map +1 -1
  20. package/lib/components/screens/combat/components/controls/PauseMenu.d.ts.map +1 -1
  21. package/lib/components/screens/combat/components/controls/PauseMenu.js.map +1 -1
  22. package/lib/components/screens/combat/components/effects/ArterialSpray3D.d.ts.map +1 -1
  23. package/lib/components/screens/combat/components/effects/BloodDecals3D.d.ts.map +1 -1
  24. package/lib/components/screens/combat/components/effects/BloodDecals3D.js.map +1 -1
  25. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.d.ts.map +1 -1
  26. package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js.map +1 -1
  27. package/lib/components/screens/combat/components/effects/BloodParticles3D.d.ts.map +1 -1
  28. package/lib/components/screens/combat/components/effects/BloodParticles3D.js.map +1 -1
  29. package/lib/components/screens/combat/components/effects/BloodViscosity3D.d.ts.map +1 -1
  30. package/lib/components/screens/combat/components/effects/BloodViscosity3D.js.map +1 -1
  31. package/lib/components/screens/combat/components/effects/BoneCrackParticles3D.d.ts.map +1 -1
  32. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.d.ts.map +1 -1
  33. package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js.map +1 -1
  34. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.d.ts.map +1 -1
  35. package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js.map +1 -1
  36. package/lib/components/screens/combat/components/effects/DustClouds3D.d.ts.map +1 -1
  37. package/lib/components/screens/combat/components/effects/EarthCrackEffect3D.d.ts.map +1 -1
  38. package/lib/components/screens/combat/components/effects/EarthHealingEffect3D.d.ts.map +1 -1
  39. package/lib/components/screens/combat/components/effects/ImpactSparks3D.d.ts.map +1 -1
  40. package/lib/components/screens/combat/components/effects/InternalDamage3D.d.ts.map +1 -1
  41. package/lib/components/screens/combat/components/effects/InternalDamage3D.js.map +1 -1
  42. package/lib/components/screens/combat/components/effects/LiPrecisionTargetingOverlay.d.ts.map +1 -1
  43. package/lib/components/screens/combat/components/effects/NerveStrikeParticles3D.d.ts.map +1 -1
  44. package/lib/components/screens/combat/components/effects/PainVignette.d.ts.map +1 -1
  45. package/lib/components/screens/combat/components/effects/PainVignette.js.map +1 -1
  46. package/lib/components/screens/combat/components/effects/ParticleAudio3D.d.ts.map +1 -1
  47. package/lib/components/screens/combat/components/effects/ParticleAudio3D.js.map +1 -1
  48. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.d.ts.map +1 -1
  49. package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js.map +1 -1
  50. package/lib/components/screens/combat/components/effects/WaterRipple3D.d.ts.map +1 -1
  51. package/lib/components/screens/combat/components/effects/WaterWave3D.d.ts.map +1 -1
  52. package/lib/components/screens/combat/components/effects/index.d.ts.map +1 -1
  53. package/lib/components/screens/combat/components/feedback/MatchCountdown.d.ts.map +1 -1
  54. package/lib/components/screens/combat/components/feedback/MatchCountdown.js.map +1 -1
  55. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.d.ts.map +1 -1
  56. package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js.map +1 -1
  57. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.d.ts.map +1 -1
  58. package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js.map +1 -1
  59. package/lib/components/screens/combat/components/hud/CombatBottomHUD.d.ts.map +1 -1
  60. package/lib/components/screens/combat/components/hud/CombatBottomHUD.js.map +1 -1
  61. package/lib/components/screens/combat/components/hud/CombatLeftHUD.d.ts.map +1 -1
  62. package/lib/components/screens/combat/components/hud/CombatLeftHUD.js.map +1 -1
  63. package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.d.ts.map +1 -1
  64. package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.js.map +1 -1
  65. package/lib/components/screens/combat/components/hud/CombatRightHUD.d.ts.map +1 -1
  66. package/lib/components/screens/combat/components/hud/CombatRightHUD.js.map +1 -1
  67. package/lib/components/screens/combat/components/hud/CombatTopHUD.d.ts.map +1 -1
  68. package/lib/components/screens/combat/components/hud/CombatTopHUD.js.map +1 -1
  69. package/lib/components/screens/combat/components/hud/DifficultyIndicator.d.ts.map +1 -1
  70. package/lib/components/screens/combat/components/hud/DifficultyIndicator.js.map +1 -1
  71. package/lib/components/screens/combat/components/hud/FPSMonitor.d.ts.map +1 -1
  72. package/lib/components/screens/combat/components/hud/FPSMonitor.js.map +1 -1
  73. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.d.ts.map +1 -1
  74. package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js.map +1 -1
  75. package/lib/components/screens/combat/components/indicators/BalanceIndicator.d.ts.map +1 -1
  76. package/lib/components/screens/combat/components/indicators/BalanceIndicator.js.map +1 -1
  77. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts +0 -1
  78. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts.map +1 -1
  79. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js +0 -1
  80. package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js.map +1 -1
  81. package/lib/components/screens/combat/components/indicators/StaminaWarning.d.ts.map +1 -1
  82. package/lib/components/screens/combat/components/indicators/StaminaWarning.js.map +1 -1
  83. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts +0 -2
  84. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts.map +1 -1
  85. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js +0 -1
  86. package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js.map +1 -1
  87. package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts.map +1 -1
  88. package/lib/components/screens/combat/helpers/AnimationUpdater.js.map +1 -1
  89. package/lib/components/screens/combat/helpers/combatHelpers.d.ts.map +1 -1
  90. package/lib/components/screens/combat/helpers/combatHelpers.js.map +1 -1
  91. package/lib/components/screens/combat/hooks/useAICombat.d.ts.map +1 -1
  92. package/lib/components/screens/combat/hooks/useAICombat.js.map +1 -1
  93. package/lib/components/screens/combat/hooks/useCombatActions.d.ts.map +1 -1
  94. package/lib/components/screens/combat/hooks/useCombatActions.js.map +1 -1
  95. package/lib/components/screens/combat/hooks/useCombatAttackMovement.d.ts.map +1 -1
  96. package/lib/components/screens/combat/hooks/useCombatAttackMovement.js.map +1 -1
  97. package/lib/components/screens/combat/hooks/useCombatAudio.d.ts.map +1 -1
  98. package/lib/components/screens/combat/hooks/useCombatAudio.js.map +1 -1
  99. package/lib/components/screens/combat/hooks/useCombatLayout.d.ts.map +1 -1
  100. package/lib/components/screens/combat/hooks/useCombatLayout.js.map +1 -1
  101. package/lib/components/screens/combat/hooks/useCombatState.d.ts.map +1 -1
  102. package/lib/components/screens/combat/hooks/useCombatState.js.map +1 -1
  103. package/lib/components/screens/combat/hooks/useGrapplingAudio.d.ts.map +1 -1
  104. package/lib/components/screens/combat/hooks/usePreloadCombatAudio.d.ts.map +1 -1
  105. package/lib/components/screens/controls/ControlsScreen3D.d.ts.map +1 -1
  106. package/lib/components/screens/controls/ControlsScreen3D.js.map +1 -1
  107. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.d.ts.map +1 -1
  108. package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js.map +1 -1
  109. package/lib/components/screens/controls/components/GamepadVisualization3D.d.ts.map +1 -1
  110. package/lib/components/screens/controls/components/GamepadVisualization3D.js.map +1 -1
  111. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.d.ts.map +1 -1
  112. package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js.map +1 -1
  113. package/lib/components/screens/controls/components/Key3D.d.ts.map +1 -1
  114. package/lib/components/screens/controls/components/Key3D.js.map +1 -1
  115. package/lib/components/screens/controls/components/VisualKeyboard3D.d.ts.map +1 -1
  116. package/lib/components/screens/controls/components/VisualKeyboard3D.js.map +1 -1
  117. package/lib/components/screens/controls/constants/ControlsConstants.d.ts.map +1 -1
  118. package/lib/components/screens/controls/constants/ControlsConstants.js.map +1 -1
  119. package/lib/components/screens/controls/hooks/useControlsState.d.ts.map +1 -1
  120. package/lib/components/screens/controls/hooks/useControlsState.js.map +1 -1
  121. package/lib/components/screens/endscreen/EndScreen3D.d.ts.map +1 -1
  122. package/lib/components/screens/endscreen/EndScreen3D.js.map +1 -1
  123. package/lib/components/screens/endscreen/components/DefeatAnimation3D.d.ts.map +1 -1
  124. package/lib/components/screens/endscreen/components/DefeatAnimation3D.js.map +1 -1
  125. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.d.ts.map +1 -1
  126. package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js.map +1 -1
  127. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.d.ts.map +1 -1
  128. package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js.map +1 -1
  129. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.d.ts.map +1 -1
  130. package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js.map +1 -1
  131. package/lib/components/screens/endscreen/components/VictoryAnimation3D.d.ts.map +1 -1
  132. package/lib/components/screens/endscreen/components/VictoryAnimation3D.js.map +1 -1
  133. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.d.ts.map +1 -1
  134. package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js.map +1 -1
  135. package/lib/components/screens/endscreen/components/index.d.ts.map +1 -1
  136. package/lib/components/screens/endscreen/index.d.ts.map +1 -1
  137. package/lib/components/screens/intro/IntroScreen3D.d.ts.map +1 -1
  138. package/lib/components/screens/intro/IntroScreen3D.js +1 -1
  139. package/lib/components/screens/intro/IntroScreen3D.js.map +1 -1
  140. package/lib/components/screens/intro/components/AbilityListOverlayHtml.d.ts.map +1 -1
  141. package/lib/components/screens/intro/components/AbilityListOverlayHtml.js.map +1 -1
  142. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.d.ts.map +1 -1
  143. package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js.map +1 -1
  144. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.d.ts.map +1 -1
  145. package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js.map +1 -1
  146. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.d.ts.map +1 -1
  147. package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js.map +1 -1
  148. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.d.ts.map +1 -1
  149. package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js.map +1 -1
  150. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.d.ts.map +1 -1
  151. package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js.map +1 -1
  152. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.d.ts.map +1 -1
  153. package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js.map +1 -1
  154. package/lib/components/screens/intro/components/StatBarOverlayHtml.d.ts.map +1 -1
  155. package/lib/components/screens/intro/components/StatBarOverlayHtml.js.map +1 -1
  156. package/lib/components/screens/philosophy/PhilosophyScreen3D.d.ts.map +1 -1
  157. package/lib/components/screens/philosophy/PhilosophyScreen3D.js.map +1 -1
  158. package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts +0 -1
  159. package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts.map +1 -1
  160. package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts +0 -1
  161. package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts.map +1 -1
  162. package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts +0 -1
  163. package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts.map +1 -1
  164. package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts +0 -1
  165. package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts.map +1 -1
  166. package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts +0 -1
  167. package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts.map +1 -1
  168. package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts +0 -1
  169. package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts.map +1 -1
  170. package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts +0 -1
  171. package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts.map +1 -1
  172. package/lib/components/screens/training/TrainingScreen3D.d.ts.map +1 -1
  173. package/lib/components/screens/training/TrainingScreen3D.js.map +1 -1
  174. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.d.ts.map +1 -1
  175. package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js.map +1 -1
  176. package/lib/components/screens/training/components/AnatomyOverlay3D.d.ts.map +1 -1
  177. package/lib/components/screens/training/components/AnatomyOverlay3D.js.map +1 -1
  178. package/lib/components/screens/training/components/DamageNumber3D.d.ts.map +1 -1
  179. package/lib/components/screens/training/components/FootPlacementMarkers3D.d.ts.map +1 -1
  180. package/lib/components/screens/training/components/FootPlacementMarkers3D.js.map +1 -1
  181. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.d.ts.map +1 -1
  182. package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js.map +1 -1
  183. package/lib/components/screens/training/components/HitFeedbackEffect3D.d.ts.map +1 -1
  184. package/lib/components/screens/training/components/HitFeedbackEffect3D.js.map +1 -1
  185. package/lib/components/screens/training/components/TrainingAICharacter3D.d.ts.map +1 -1
  186. package/lib/components/screens/training/components/TrainingArena3D.d.ts.map +1 -1
  187. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.d.ts.map +1 -1
  188. package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js.map +1 -1
  189. package/lib/components/screens/training/components/TrainingDummy3D.d.ts.map +1 -1
  190. package/lib/components/screens/training/components/TrainingDummy3D.js.map +1 -1
  191. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.d.ts.map +1 -1
  192. package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js.map +1 -1
  193. package/lib/components/screens/training/components/TrainingHitEffects3D.d.ts.map +1 -1
  194. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.d.ts.map +1 -1
  195. package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js.map +1 -1
  196. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.d.ts.map +1 -1
  197. package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js.map +1 -1
  198. package/lib/components/screens/training/components/VitalPointMarker3D.d.ts.map +1 -1
  199. package/lib/components/screens/training/components/VitalPointMarker3D.js.map +1 -1
  200. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.d.ts.map +1 -1
  201. package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js.map +1 -1
  202. package/lib/components/screens/training/components/hud/TrainingBottomHUD.d.ts.map +1 -1
  203. package/lib/components/screens/training/components/hud/TrainingBottomHUD.js.map +1 -1
  204. package/lib/components/screens/training/components/hud/TrainingLeftHUD.d.ts.map +1 -1
  205. package/lib/components/screens/training/components/hud/TrainingLeftHUD.js.map +1 -1
  206. package/lib/components/screens/training/components/hud/TrainingRightHUD.d.ts.map +1 -1
  207. package/lib/components/screens/training/components/hud/TrainingRightHUD.js.map +1 -1
  208. package/lib/components/screens/training/components/hud/TrainingTopHUD.d.ts.map +1 -1
  209. package/lib/components/screens/training/components/hud/TrainingTopHUD.js.map +1 -1
  210. package/lib/components/screens/training/components/index.d.ts.map +1 -1
  211. package/lib/components/screens/training/hooks/useAttackMovement.d.ts.map +1 -1
  212. package/lib/components/screens/training/hooks/useAttackMovement.js.map +1 -1
  213. package/lib/components/screens/training/hooks/useTrainingActions.d.ts.map +1 -1
  214. package/lib/components/screens/training/hooks/useTrainingActions.js.map +1 -1
  215. package/lib/components/screens/training/hooks/useTrainingLayout.d.ts.map +1 -1
  216. package/lib/components/screens/training/hooks/useTrainingLayout.js.map +1 -1
  217. package/lib/components/screens/training/hooks/useTrainingState.d.ts.map +1 -1
  218. package/lib/components/screens/training/hooks/useTrainingState.js.map +1 -1
  219. package/lib/components/shared/base/AccessibilityProvider.d.ts.map +1 -1
  220. package/lib/components/shared/base/BaseButton.d.ts.map +1 -1
  221. package/lib/components/shared/base/BaseButton.js.map +1 -1
  222. package/lib/components/shared/base/BaseButtonOverlayHtml.d.ts.map +1 -1
  223. package/lib/components/shared/base/BaseButtonOverlayHtml.js.map +1 -1
  224. package/lib/components/shared/base/BasePanel.d.ts.map +1 -1
  225. package/lib/components/shared/base/BasePanel.js.map +1 -1
  226. package/lib/components/shared/base/BaseText.d.ts.map +1 -1
  227. package/lib/components/shared/base/BaseText.js.map +1 -1
  228. package/lib/components/shared/base/ResponsiveContainer.d.ts.map +1 -1
  229. package/lib/components/shared/base/index.d.ts.map +1 -1
  230. package/lib/components/shared/base/useKoreanTheme.d.ts.map +1 -1
  231. package/lib/components/shared/base/useKoreanTheme.js.map +1 -1
  232. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.d.ts.map +1 -1
  233. package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js.map +1 -1
  234. package/lib/components/shared/effects/ScreenFlash.d.ts.map +1 -1
  235. package/lib/components/shared/mobile/ActionButtons.d.ts.map +1 -1
  236. package/lib/components/shared/mobile/ActionButtons.js +0 -1
  237. package/lib/components/shared/mobile/ActionButtons.js.map +1 -1
  238. package/lib/components/shared/mobile/GestureRecognizerPure.d.ts +0 -1
  239. package/lib/components/shared/mobile/GestureRecognizerPure.d.ts.map +1 -1
  240. package/lib/components/shared/mobile/GestureRecognizerPure.js +0 -1
  241. package/lib/components/shared/mobile/GestureRecognizerPure.js.map +1 -1
  242. package/lib/components/shared/mobile/HapticController.d.ts +0 -13
  243. package/lib/components/shared/mobile/HapticController.d.ts.map +1 -1
  244. package/lib/components/shared/mobile/HapticController.js +0 -10
  245. package/lib/components/shared/mobile/HapticController.js.map +1 -1
  246. package/lib/components/shared/mobile/MobileControlsPure.d.ts.map +1 -1
  247. package/lib/components/shared/mobile/MobileControlsPure.js.map +1 -1
  248. package/lib/components/shared/mobile/PerformanceMonitor.d.ts +0 -15
  249. package/lib/components/shared/mobile/PerformanceMonitor.d.ts.map +1 -1
  250. package/lib/components/shared/mobile/StanceWheelPure.d.ts +0 -1
  251. package/lib/components/shared/mobile/StanceWheelPure.d.ts.map +1 -1
  252. package/lib/components/shared/mobile/StanceWheelPure.js +0 -1
  253. package/lib/components/shared/mobile/StanceWheelPure.js.map +1 -1
  254. package/lib/components/shared/mobile/TouchOptimizer.d.ts +0 -4
  255. package/lib/components/shared/mobile/TouchOptimizer.d.ts.map +1 -1
  256. package/lib/components/shared/mobile/TouchOptimizer.js +0 -3
  257. package/lib/components/shared/mobile/TouchOptimizer.js.map +1 -1
  258. package/lib/components/shared/mobile/VirtualDPad.d.ts.map +1 -1
  259. package/lib/components/shared/mobile/VirtualDPad.js +0 -1
  260. package/lib/components/shared/mobile/VirtualDPad.js.map +1 -1
  261. package/lib/components/shared/mobile/index.d.ts.map +1 -1
  262. package/lib/components/shared/three/anatomy/BodySurface.d.ts.map +1 -1
  263. package/lib/components/shared/three/anatomy/BodySurface.js.map +1 -1
  264. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.d.ts.map +1 -1
  265. package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js.map +1 -1
  266. package/lib/components/shared/three/anatomy/BoneClothing.d.ts.map +1 -1
  267. package/lib/components/shared/three/anatomy/BoneClothing.js.map +1 -1
  268. package/lib/components/shared/three/anatomy/BoneRenderer.d.ts +0 -1
  269. package/lib/components/shared/three/anatomy/BoneRenderer.d.ts.map +1 -1
  270. package/lib/components/shared/three/anatomy/BoneRenderer.js.map +1 -1
  271. package/lib/components/shared/three/anatomy/Face3D.d.ts.map +1 -1
  272. package/lib/components/shared/three/anatomy/Face3D.js.map +1 -1
  273. package/lib/components/shared/three/anatomy/Foot3D.d.ts +0 -1
  274. package/lib/components/shared/three/anatomy/Foot3D.d.ts.map +1 -1
  275. package/lib/components/shared/three/anatomy/Foot3D.js.map +1 -1
  276. package/lib/components/shared/three/anatomy/Hand3D.d.ts +0 -1
  277. package/lib/components/shared/three/anatomy/Hand3D.d.ts.map +1 -1
  278. package/lib/components/shared/three/anatomy/Hand3D.js.map +1 -1
  279. package/lib/components/shared/three/effects/ActionFeedback.d.ts.map +1 -1
  280. package/lib/components/shared/three/effects/ActionFeedback.js.map +1 -1
  281. package/lib/components/shared/three/effects/DamageNumbers.d.ts.map +1 -1
  282. package/lib/components/shared/three/effects/DamageNumbers.js.map +1 -1
  283. package/lib/components/shared/three/effects/ExplosiveBurstEffect3D.d.ts.map +1 -1
  284. package/lib/components/shared/three/effects/GrapplingIndicator3D.d.ts.map +1 -1
  285. package/lib/components/shared/three/effects/HitEffects3D.d.ts.map +1 -1
  286. package/lib/components/shared/three/effects/HitEffects3D.js.map +1 -1
  287. package/lib/components/shared/three/effects/LimbExposureIndicator3D.d.ts.map +1 -1
  288. package/lib/components/shared/three/effects/NerveDisruptionEffect3D.d.ts.map +1 -1
  289. package/lib/components/shared/three/effects/PlayerStateIndicators.d.ts.map +1 -1
  290. package/lib/components/shared/three/effects/PlayerStateIndicators.js.map +1 -1
  291. package/lib/components/shared/three/effects/StanceSymbol3D.d.ts.map +1 -1
  292. package/lib/components/shared/three/effects/StanceSymbol3D.js.map +1 -1
  293. package/lib/components/shared/three/effects/StanceTransitionEffect.d.ts.map +1 -1
  294. package/lib/components/shared/three/effects/StanceTransitionEffect.js.map +1 -1
  295. package/lib/components/shared/three/effects/ThunderEffect3D.d.ts.map +1 -1
  296. package/lib/components/shared/three/effects/VitalPointMarkers3D.d.ts.map +1 -1
  297. package/lib/components/shared/three/effects/VitalPointMarkers3D.js.map +1 -1
  298. package/lib/components/shared/three/index.d.ts.map +1 -1
  299. package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts +0 -6
  300. package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts.map +1 -1
  301. package/lib/components/shared/three/indicators/ElementalColorSystem.js +0 -4
  302. package/lib/components/shared/three/indicators/ElementalColorSystem.js.map +1 -1
  303. package/lib/components/shared/three/indicators/GuardIndicator.d.ts +0 -1
  304. package/lib/components/shared/three/indicators/GuardIndicator.d.ts.map +1 -1
  305. package/lib/components/shared/three/indicators/GuardIndicator.js +0 -1
  306. package/lib/components/shared/three/indicators/GuardIndicator.js.map +1 -1
  307. package/lib/components/shared/three/indicators/HapticFeedback.d.ts +0 -7
  308. package/lib/components/shared/three/indicators/HapticFeedback.d.ts.map +1 -1
  309. package/lib/components/shared/three/indicators/HapticFeedback.js +0 -2
  310. package/lib/components/shared/three/indicators/HapticFeedback.js.map +1 -1
  311. package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts +0 -1
  312. package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts.map +1 -1
  313. package/lib/components/shared/three/indicators/StanceChangeIndicator.js +0 -1
  314. package/lib/components/shared/three/indicators/StanceChangeIndicator.js.map +1 -1
  315. package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts +0 -1
  316. package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts.map +1 -1
  317. package/lib/components/shared/three/models/Player3DWithTransitions.d.ts.map +1 -1
  318. package/lib/components/shared/three/models/Player3DWithTransitions.js.map +1 -1
  319. package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts.map +1 -1
  320. package/lib/components/shared/three/models/SkeletalPlayer3D.js.map +1 -1
  321. package/lib/components/shared/three/optimization/AdaptiveQuality.d.ts.map +1 -1
  322. package/lib/components/shared/three/optimization/AdaptiveQuality.js.map +1 -1
  323. package/lib/components/shared/three/optimization/InstancedGeometry.d.ts.map +1 -1
  324. package/lib/components/shared/three/optimization/LODSystem.d.ts.map +1 -1
  325. package/lib/components/shared/three/scene/AtmosphericParticles3D.d.ts.map +1 -1
  326. package/lib/components/shared/three/scene/AtmosphericParticles3D.js.map +1 -1
  327. package/lib/components/shared/three/scene/BackgroundScene3D.d.ts.map +1 -1
  328. package/lib/components/shared/three/scene/BackgroundScene3D.js.map +1 -1
  329. package/lib/components/shared/three/scene/CombatArena3D.d.ts.map +1 -1
  330. package/lib/components/shared/three/scene/CombatArena3D.js.map +1 -1
  331. package/lib/components/shared/three/scene/DebugCollision.d.ts +0 -2
  332. package/lib/components/shared/three/scene/DebugCollision.d.ts.map +1 -1
  333. package/lib/components/shared/three/scene/KoreanSignage3D.d.ts.map +1 -1
  334. package/lib/components/shared/three/scene/KoreanSignage3D.js.map +1 -1
  335. package/lib/components/shared/three/ui/ArchetypeCard.d.ts.map +1 -1
  336. package/lib/components/shared/three/ui/ArchetypeCard.js.map +1 -1
  337. package/lib/components/shared/three/ui/BodyPartHealthDisplay.d.ts.map +1 -1
  338. package/lib/components/shared/three/ui/BodyPartHealthDisplay.js.map +1 -1
  339. package/lib/components/shared/three/ui/BreathingIndicator.d.ts.map +1 -1
  340. package/lib/components/shared/three/ui/BreathingIndicator2.js.map +1 -1
  341. package/lib/components/shared/three/ui/CombatReadinessBar.d.ts.map +1 -1
  342. package/lib/components/shared/three/ui/CombatReadinessBar.js.map +1 -1
  343. package/lib/components/shared/three/ui/ComboCounter.d.ts.map +1 -1
  344. package/lib/components/shared/three/ui/ComboCounter.js.map +1 -1
  345. package/lib/components/shared/three/ui/HealthBar.d.ts.map +1 -1
  346. package/lib/components/shared/three/ui/HealthBar.js.map +1 -1
  347. package/lib/components/shared/three/ui/KoreanButton.d.ts.map +1 -1
  348. package/lib/components/shared/three/ui/KoreanButton.js.map +1 -1
  349. package/lib/components/shared/three/ui/KoreanPanel.d.ts.map +1 -1
  350. package/lib/components/shared/three/ui/KoreanPanel.js.map +1 -1
  351. package/lib/components/shared/three/ui/KoreanText.d.ts.map +1 -1
  352. package/lib/components/shared/three/ui/KoreanText.js.map +1 -1
  353. package/lib/components/shared/three/ui/MenuList.d.ts.map +1 -1
  354. package/lib/components/shared/three/ui/MenuList.js.map +1 -1
  355. package/lib/components/shared/three/ui/PlayerHUD.d.ts.map +1 -1
  356. package/lib/components/shared/three/ui/PlayerHUD.js.map +1 -1
  357. package/lib/components/shared/three/ui/ProgressBar.d.ts.map +1 -1
  358. package/lib/components/shared/three/ui/ProgressBar.js.map +1 -1
  359. package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts +0 -1
  360. package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts.map +1 -1
  361. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js +0 -1
  362. package/lib/components/shared/three/ui/SpeedIndicatorHUD.js.map +1 -1
  363. package/lib/components/shared/three/ui/StaminaBar.d.ts.map +1 -1
  364. package/lib/components/shared/three/ui/StaminaBar.js.map +1 -1
  365. package/lib/components/shared/three/ui/TechniqueBar.d.ts.map +1 -1
  366. package/lib/components/shared/three/ui/TechniqueBar.js.map +1 -1
  367. package/lib/components/shared/three/ui/TechniqueBarContainer.d.ts.map +1 -1
  368. package/lib/components/shared/three/ui/TechniqueCard.d.ts.map +1 -1
  369. package/lib/components/shared/three/ui/TechniqueCard.js.map +1 -1
  370. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.d.ts.map +1 -1
  371. package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js.map +1 -1
  372. package/lib/components/shared/three/ui/VulnerabilityWindowHUD.d.ts.map +1 -1
  373. package/lib/components/shared/ui/BaseHUDContainer.d.ts.map +1 -1
  374. package/lib/components/shared/ui/BaseHUDContainer.js.map +1 -1
  375. package/lib/components/shared/ui/CombatTimer.d.ts.map +1 -1
  376. package/lib/components/shared/ui/CombatTimer.js.map +1 -1
  377. package/lib/components/shared/ui/ErrorBoundary.d.ts.map +1 -1
  378. package/lib/components/shared/ui/ErrorModal.d.ts.map +1 -1
  379. package/lib/components/shared/ui/ErrorModal.js.map +1 -1
  380. package/lib/components/shared/ui/HUDSection.d.ts.map +1 -1
  381. package/lib/components/shared/ui/LoadingState.d.ts.map +1 -1
  382. package/lib/components/shared/ui/LoadingState.js.map +1 -1
  383. package/lib/components/shared/ui/MobileHUDLayout.d.ts +0 -1
  384. package/lib/components/shared/ui/MobileHUDLayout.d.ts.map +1 -1
  385. package/lib/components/shared/ui/ResponsiveContainer.d.ts +0 -1
  386. package/lib/components/shared/ui/ResponsiveContainer.d.ts.map +1 -1
  387. package/lib/components/shared/ui/SplashScreen.d.ts.map +1 -1
  388. package/lib/components/shared/ui/SplashScreen.js +2 -2
  389. package/lib/components/shared/ui/SplashScreen.js.map +1 -1
  390. package/lib/components/shared/ui/StyledHUDPanel.d.ts.map +1 -1
  391. package/lib/components/shared/ui/VitalPointOverlayControlsPure.d.ts.map +1 -1
  392. package/lib/components/shared/ui/VitalPointOverlayControlsPure.js.map +1 -1
  393. package/lib/components/shared/ui/VolumeControl.d.ts.map +1 -1
  394. package/lib/components/shared/ui/VolumeControl.js.map +1 -1
  395. package/lib/components/shared/ui/shared/ConfirmDialog.d.ts.map +1 -1
  396. package/lib/components/shared/ui/shared/ConfirmDialog.js.map +1 -1
  397. package/lib/components/test/Hello3D.d.ts.map +1 -1
  398. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.d.ts.map +1 -1
  399. package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js.map +1 -1
  400. package/lib/components/ui/combat/ComboCounter.d.ts.map +1 -1
  401. package/lib/components/ui/combat/PressureMeter.d.ts.map +1 -1
  402. package/lib/systems/CombatSystem.d.ts +0 -6
  403. package/lib/systems/CombatSystem.d.ts.map +1 -1
  404. package/lib/systems/CombatSystem.js +0 -6
  405. package/lib/systems/CombatSystem.js.map +1 -1
  406. package/lib/systems/EffectCalculator.d.ts +0 -7
  407. package/lib/systems/EffectCalculator.d.ts.map +1 -1
  408. package/lib/systems/EffectCalculator.js +0 -4
  409. package/lib/systems/EffectCalculator.js.map +1 -1
  410. package/lib/systems/LayoutSystem.d.ts +0 -1
  411. package/lib/systems/LayoutSystem.d.ts.map +1 -1
  412. package/lib/systems/LayoutSystem.js +0 -1
  413. package/lib/systems/LayoutSystem.js.map +1 -1
  414. package/lib/systems/PlayerEffectManager.d.ts +0 -10
  415. package/lib/systems/PlayerEffectManager.d.ts.map +1 -1
  416. package/lib/systems/PlayerEffectManager.js +0 -3
  417. package/lib/systems/PlayerEffectManager.js.map +1 -1
  418. package/lib/systems/ResponsiveScaling.d.ts +0 -12
  419. package/lib/systems/ResponsiveScaling.d.ts.map +1 -1
  420. package/lib/systems/ResponsiveScaling.js +0 -12
  421. package/lib/systems/ResponsiveScaling.js.map +1 -1
  422. package/lib/systems/TrigramSystem.d.ts +0 -13
  423. package/lib/systems/TrigramSystem.d.ts.map +1 -1
  424. package/lib/systems/TrigramSystem.js +0 -13
  425. package/lib/systems/TrigramSystem.js.map +1 -1
  426. package/lib/systems/VitalPointSystem.d.ts +0 -10
  427. package/lib/systems/VitalPointSystem.d.ts.map +1 -1
  428. package/lib/systems/VitalPointSystem.js +0 -10
  429. package/lib/systems/VitalPointSystem.js.map +1 -1
  430. package/lib/systems/animation/builders/KeyframeInterpolation.d.ts +0 -4
  431. package/lib/systems/animation/builders/KeyframeInterpolation.d.ts.map +1 -1
  432. package/lib/systems/animation/builders/KeyframeInterpolation.js +0 -1
  433. package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -1
  434. package/lib/systems/animation/builders/SkeletonRig.d.ts +0 -4
  435. package/lib/systems/animation/builders/SkeletonRig.d.ts.map +1 -1
  436. package/lib/systems/animation/builders/SkeletonRig.js +0 -3
  437. package/lib/systems/animation/builders/SkeletonRig.js.map +1 -1
  438. package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts +0 -5
  439. package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts.map +1 -1
  440. package/lib/systems/animation/catalogs/RecoveryAnimations.js +0 -5
  441. package/lib/systems/animation/catalogs/RecoveryAnimations.js.map +1 -1
  442. package/lib/systems/animation/core/AnimationHitTiming.d.ts +0 -6
  443. package/lib/systems/animation/core/AnimationHitTiming.d.ts.map +1 -1
  444. package/lib/systems/animation/core/AnimationHitTiming.js +0 -4
  445. package/lib/systems/animation/core/AnimationHitTiming.js.map +1 -1
  446. package/lib/systems/animation/core/AnimationTransitions.d.ts +0 -3
  447. package/lib/systems/animation/core/AnimationTransitions.d.ts.map +1 -1
  448. package/lib/systems/animation/core/AnimationTransitions.js.map +1 -1
  449. package/lib/systems/animation/core/LateralityTransform.d.ts +0 -3
  450. package/lib/systems/animation/core/LateralityTransform.d.ts.map +1 -1
  451. package/lib/systems/animation/core/LateralityTransform.js +0 -1
  452. package/lib/systems/animation/core/LateralityTransform.js.map +1 -1
  453. package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts +0 -1
  454. package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts.map +1 -1
  455. package/lib/systems/animation/core/RecoveryPhaseEnhancer.js.map +1 -1
  456. package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts +0 -10
  457. package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts.map +1 -1
  458. package/lib/systems/animation/core/TechniqueAnimationMapper.js +0 -8
  459. package/lib/systems/animation/core/TechniqueAnimationMapper.js.map +1 -1
  460. package/lib/systems/animation/core/TrigramAnimationMapping.d.ts +0 -10
  461. package/lib/systems/animation/core/TrigramAnimationMapping.d.ts.map +1 -1
  462. package/lib/systems/animation/core/TrigramStanceTransitions.d.ts +0 -2
  463. package/lib/systems/animation/core/TrigramStanceTransitions.d.ts.map +1 -1
  464. package/lib/systems/animation/core/types.d.ts +0 -39
  465. package/lib/systems/animation/core/types.d.ts.map +1 -1
  466. package/lib/systems/animation/core/types.js +0 -9
  467. package/lib/systems/animation/core/types.js.map +1 -1
  468. package/lib/systems/animation/systems/AdvancedJointMovements.d.ts +0 -27
  469. package/lib/systems/animation/systems/AdvancedJointMovements.d.ts.map +1 -1
  470. package/lib/systems/animation/systems/AdvancedJointMovements.js +0 -1
  471. package/lib/systems/animation/systems/AdvancedJointMovements.js.map +1 -1
  472. package/lib/systems/animation/systems/BodyFacingSystem.d.ts +0 -19
  473. package/lib/systems/animation/systems/BodyFacingSystem.d.ts.map +1 -1
  474. package/lib/systems/animation/systems/BodyFacingSystem.js +0 -14
  475. package/lib/systems/animation/systems/BodyFacingSystem.js.map +1 -1
  476. package/lib/systems/animation/systems/FacialExpressions.d.ts +0 -10
  477. package/lib/systems/animation/systems/FacialExpressions.d.ts.map +1 -1
  478. package/lib/systems/animation/systems/FacialExpressions.js +0 -2
  479. package/lib/systems/animation/systems/FacialExpressions.js.map +1 -1
  480. package/lib/systems/animation/systems/FallAnimations.d.ts +0 -4
  481. package/lib/systems/animation/systems/FallAnimations.d.ts.map +1 -1
  482. package/lib/systems/animation/systems/FallAnimations.js +0 -2
  483. package/lib/systems/animation/systems/FallAnimations.js.map +1 -1
  484. package/lib/systems/animation/systems/HeadMovements.d.ts +0 -10
  485. package/lib/systems/animation/systems/HeadMovements.d.ts.map +1 -1
  486. package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts +0 -7
  487. package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts.map +1 -1
  488. package/lib/systems/bodypart/BodyPartDamageIntegration.js +0 -7
  489. package/lib/systems/bodypart/BodyPartDamageIntegration.js.map +1 -1
  490. package/lib/systems/bodypart/BodyPartHealthSystem.d.ts +0 -13
  491. package/lib/systems/bodypart/BodyPartHealthSystem.d.ts.map +1 -1
  492. package/lib/systems/bodypart/BodyPartHealthSystem.js +0 -13
  493. package/lib/systems/bodypart/BodyPartHealthSystem.js.map +1 -1
  494. package/lib/systems/bodypart/BodyPartPositionMapping.d.ts +0 -6
  495. package/lib/systems/bodypart/BodyPartPositionMapping.d.ts.map +1 -1
  496. package/lib/systems/bodypart/BodyPartPositionMapping.js +0 -6
  497. package/lib/systems/bodypart/BodyPartPositionMapping.js.map +1 -1
  498. package/lib/systems/bodypart/CombatInjuryIntegration.d.ts +0 -10
  499. package/lib/systems/bodypart/CombatInjuryIntegration.d.ts.map +1 -1
  500. package/lib/systems/bodypart/CombatInjuryIntegration.js +0 -8
  501. package/lib/systems/bodypart/CombatInjuryIntegration.js.map +1 -1
  502. package/lib/systems/bodypart/InjuryIntegration.d.ts +0 -2
  503. package/lib/systems/bodypart/InjuryIntegration.d.ts.map +1 -1
  504. package/lib/systems/bodypart/InjuryIntegration.js +0 -2
  505. package/lib/systems/bodypart/InjuryIntegration.js.map +1 -1
  506. package/lib/systems/bodypart/InjuryTracker.d.ts +0 -14
  507. package/lib/systems/bodypart/InjuryTracker.d.ts.map +1 -1
  508. package/lib/systems/bodypart/InjuryTracker.js +0 -12
  509. package/lib/systems/bodypart/InjuryTracker.js.map +1 -1
  510. package/lib/systems/bodypart/MovementPenaltySystem.d.ts +0 -8
  511. package/lib/systems/bodypart/MovementPenaltySystem.d.ts.map +1 -1
  512. package/lib/systems/bodypart/MovementPenaltySystem.js +0 -8
  513. package/lib/systems/bodypart/MovementPenaltySystem.js.map +1 -1
  514. package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts +0 -8
  515. package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts.map +1 -1
  516. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js +0 -8
  517. package/lib/systems/bodypart/PlayerInjuryTrackingManager.js.map +1 -1
  518. package/lib/systems/bodypart/types.d.ts +0 -13
  519. package/lib/systems/bodypart/types.d.ts.map +1 -1
  520. package/lib/systems/bodypart/types.js +0 -5
  521. package/lib/systems/bodypart/types.js.map +1 -1
  522. package/lib/systems/breathing/BreathingDisruptionSystem.d.ts +0 -3
  523. package/lib/systems/breathing/BreathingDisruptionSystem.d.ts.map +1 -1
  524. package/lib/systems/breathing/BreathingDisruptionSystem.js +0 -2
  525. package/lib/systems/breathing/BreathingDisruptionSystem.js.map +1 -1
  526. package/lib/systems/combat/BalanceSystem.d.ts +0 -25
  527. package/lib/systems/combat/BalanceSystem.d.ts.map +1 -1
  528. package/lib/systems/combat/BalanceSystem.js +0 -25
  529. package/lib/systems/combat/BalanceSystem.js.map +1 -1
  530. package/lib/systems/combat/BreakingStatusEffects.d.ts +0 -4
  531. package/lib/systems/combat/BreakingStatusEffects.d.ts.map +1 -1
  532. package/lib/systems/combat/BreakingStatusEffects.js +0 -3
  533. package/lib/systems/combat/BreakingStatusEffects.js.map +1 -1
  534. package/lib/systems/combat/CombatStateSystem.d.ts +0 -9
  535. package/lib/systems/combat/CombatStateSystem.d.ts.map +1 -1
  536. package/lib/systems/combat/CombatStateSystem.js +0 -9
  537. package/lib/systems/combat/CombatStateSystem.js.map +1 -1
  538. package/lib/systems/combat/ConsciousnessSystem.d.ts +0 -16
  539. package/lib/systems/combat/ConsciousnessSystem.d.ts.map +1 -1
  540. package/lib/systems/combat/ConsciousnessSystem.js +0 -16
  541. package/lib/systems/combat/ConsciousnessSystem.js.map +1 -1
  542. package/lib/systems/combat/FallIntegration.d.ts +0 -3
  543. package/lib/systems/combat/FallIntegration.d.ts.map +1 -1
  544. package/lib/systems/combat/FallIntegration.js +0 -3
  545. package/lib/systems/combat/FallIntegration.js.map +1 -1
  546. package/lib/systems/combat/GrappleSystem.d.ts +0 -2
  547. package/lib/systems/combat/GrappleSystem.d.ts.map +1 -1
  548. package/lib/systems/combat/GrappleSystem.js +0 -2
  549. package/lib/systems/combat/GrappleSystem.js.map +1 -1
  550. package/lib/systems/combat/LimbExposureSystem.d.ts +0 -7
  551. package/lib/systems/combat/LimbExposureSystem.d.ts.map +1 -1
  552. package/lib/systems/combat/LimbExposureSystem.js +0 -7
  553. package/lib/systems/combat/LimbExposureSystem.js.map +1 -1
  554. package/lib/systems/combat/PainResponseSystem.d.ts +0 -11
  555. package/lib/systems/combat/PainResponseSystem.d.ts.map +1 -1
  556. package/lib/systems/combat/PainResponseSystem.js +0 -11
  557. package/lib/systems/combat/PainResponseSystem.js.map +1 -1
  558. package/lib/systems/combat/painConsciousnessUtils.d.ts +0 -7
  559. package/lib/systems/combat/painConsciousnessUtils.d.ts.map +1 -1
  560. package/lib/systems/combat/painConsciousnessUtils.js +0 -7
  561. package/lib/systems/combat/painConsciousnessUtils.js.map +1 -1
  562. package/lib/systems/effects.d.ts +11 -0
  563. package/lib/systems/effects.d.ts.map +1 -1
  564. package/lib/systems/effects.js +10 -0
  565. package/lib/systems/effects.js.map +1 -1
  566. package/lib/systems/game.d.ts +16 -0
  567. package/lib/systems/game.d.ts.map +1 -1
  568. package/lib/systems/game.js +1 -0
  569. package/lib/systems/game.js.map +1 -1
  570. package/lib/systems/index.d.ts +5 -1
  571. package/lib/systems/index.d.ts.map +1 -1
  572. package/lib/systems/index.js.map +1 -1
  573. package/lib/systems/movement/InjuryMovementModifier.d.ts +0 -10
  574. package/lib/systems/movement/InjuryMovementModifier.d.ts.map +1 -1
  575. package/lib/systems/movement/InjuryMovementModifier.js +0 -7
  576. package/lib/systems/movement/InjuryMovementModifier.js.map +1 -1
  577. package/lib/systems/movement/integration.d.ts +0 -3
  578. package/lib/systems/movement/integration.d.ts.map +1 -1
  579. package/lib/systems/movement/integration.js +0 -3
  580. package/lib/systems/movement/integration.js.map +1 -1
  581. package/lib/systems/physics/AttackMovementPhysics.d.ts +0 -9
  582. package/lib/systems/physics/AttackMovementPhysics.d.ts.map +1 -1
  583. package/lib/systems/physics/AttackMovementPhysics.js +0 -7
  584. package/lib/systems/physics/AttackMovementPhysics.js.map +1 -1
  585. package/lib/systems/physics/CollisionDetection.d.ts +0 -6
  586. package/lib/systems/physics/CollisionDetection.d.ts.map +1 -1
  587. package/lib/systems/physics/CollisionDetection.js +0 -6
  588. package/lib/systems/physics/CollisionDetection.js.map +1 -1
  589. package/lib/systems/physics/CoordinateMapper.d.ts +0 -1
  590. package/lib/systems/physics/CoordinateMapper.d.ts.map +1 -1
  591. package/lib/systems/physics/CoordinateMapper.js +0 -1
  592. package/lib/systems/physics/CoordinateMapper.js.map +1 -1
  593. package/lib/systems/physics/KnockbackPhysics.d.ts +0 -11
  594. package/lib/systems/physics/KnockbackPhysics.d.ts.map +1 -1
  595. package/lib/systems/physics/KnockbackPhysics.js +0 -8
  596. package/lib/systems/physics/KnockbackPhysics.js.map +1 -1
  597. package/lib/systems/physics/MovementPhysics.d.ts +0 -10
  598. package/lib/systems/physics/MovementPhysics.d.ts.map +1 -1
  599. package/lib/systems/physics/MovementPhysics.js +0 -8
  600. package/lib/systems/physics/MovementPhysics.js.map +1 -1
  601. package/lib/systems/physics/PhysicalReachCalculator.d.ts +0 -6
  602. package/lib/systems/physics/PhysicalReachCalculator.d.ts.map +1 -1
  603. package/lib/systems/physics/PhysicalReachCalculator.js +0 -5
  604. package/lib/systems/physics/PhysicalReachCalculator.js.map +1 -1
  605. package/lib/systems/physics/SpeedModifierSystem.d.ts +0 -5
  606. package/lib/systems/physics/SpeedModifierSystem.d.ts.map +1 -1
  607. package/lib/systems/physics/SpeedModifierSystem.js +0 -4
  608. package/lib/systems/physics/SpeedModifierSystem.js.map +1 -1
  609. package/lib/systems/player.d.ts +0 -5
  610. package/lib/systems/player.d.ts.map +1 -1
  611. package/lib/systems/trigram/TrigramCalculator.d.ts +0 -1
  612. package/lib/systems/trigram/TrigramCalculator.d.ts.map +1 -1
  613. package/lib/systems/trigram/TrigramCalculator.js +0 -1
  614. package/lib/systems/trigram/TrigramCalculator.js.map +1 -1
  615. package/lib/systems/trigram/types.d.ts +0 -4
  616. package/lib/systems/trigram/types.d.ts.map +1 -1
  617. package/lib/systems/trigram/types.js +0 -2
  618. package/lib/systems/trigram/types.js.map +1 -1
  619. package/lib/systems/types.d.ts +7 -2
  620. package/lib/systems/types.d.ts.map +1 -1
  621. package/lib/systems/types.js.map +1 -1
  622. package/lib/systems/vitalpoint/DamageCalculator.d.ts +0 -3
  623. package/lib/systems/vitalpoint/DamageCalculator.d.ts.map +1 -1
  624. package/lib/systems/vitalpoint/DamageCalculator.js +0 -3
  625. package/lib/systems/vitalpoint/DamageCalculator.js.map +1 -1
  626. package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts +0 -8
  627. package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts.map +1 -1
  628. package/lib/systems/vitalpoint/KoreanVitalPoints.js +0 -8
  629. package/lib/systems/vitalpoint/KoreanVitalPoints.js.map +1 -1
  630. package/lib/systems/vitalpoint/VitalPointsData.d.ts +0 -3
  631. package/lib/systems/vitalpoint/VitalPointsData.d.ts.map +1 -1
  632. package/lib/systems/vitalpoint/VitalPointsData.js +0 -1
  633. package/lib/systems/vitalpoint/VitalPointsData.js.map +1 -1
  634. package/lib/types/PhysicsTypes.d.ts +21 -78
  635. package/lib/types/PhysicsTypes.d.ts.map +1 -1
  636. package/lib/types/PhysicsTypes.js +17 -63
  637. package/lib/types/PhysicsTypes.js.map +1 -1
  638. package/lib/types/clothing.d.ts +0 -9
  639. package/lib/types/clothing.d.ts.map +1 -1
  640. package/lib/types/constants/animations.d.ts +35 -1
  641. package/lib/types/constants/animations.d.ts.map +1 -1
  642. package/lib/types/constants/animations.js +12 -1
  643. package/lib/types/constants/animations.js.map +1 -1
  644. package/lib/types/constants/colors.d.ts +28 -2
  645. package/lib/types/constants/colors.d.ts.map +1 -1
  646. package/lib/types/constants/colors.js +30 -4
  647. package/lib/types/constants/colors.js.map +1 -1
  648. package/lib/types/constants/index.d.ts +5 -1
  649. package/lib/types/constants/index.d.ts.map +1 -1
  650. package/lib/types/constants/index.js.map +1 -1
  651. package/lib/types/constants/performance.d.ts +0 -2
  652. package/lib/types/constants/performance.d.ts.map +1 -1
  653. package/lib/types/constants/performance.js +0 -2
  654. package/lib/types/constants/performance.js.map +1 -1
  655. package/lib/types/constants/typography.d.ts +40 -2
  656. package/lib/types/constants/typography.d.ts.map +1 -1
  657. package/lib/types/constants/typography.js +40 -2
  658. package/lib/types/constants/typography.js.map +1 -1
  659. package/lib/types/constants/ui.d.ts +89 -1
  660. package/lib/types/constants/ui.d.ts.map +1 -1
  661. package/lib/types/constants/ui.js +33 -1
  662. package/lib/types/constants/ui.js.map +1 -1
  663. package/lib/types/facial.d.ts +0 -15
  664. package/lib/types/facial.d.ts.map +1 -1
  665. package/lib/types/facial.js +0 -8
  666. package/lib/types/facial.js.map +1 -1
  667. package/lib/types/hand-animation.d.ts +34 -147
  668. package/lib/types/hand-animation.d.ts.map +1 -1
  669. package/lib/types/hand-animation.js +0 -2
  670. package/lib/types/hand-animation.js.map +1 -1
  671. package/lib/types/injury.d.ts +0 -2
  672. package/lib/types/injury.d.ts.map +1 -1
  673. package/lib/types/injury.js +0 -1
  674. package/lib/types/injury.js.map +1 -1
  675. package/lib/types/physics.d.ts +0 -21
  676. package/lib/types/physics.d.ts.map +1 -1
  677. package/lib/types/physics.js +0 -6
  678. package/lib/types/physics.js.map +1 -1
  679. package/lib/types/physicsConstants.d.ts +0 -12
  680. package/lib/types/physicsConstants.d.ts.map +1 -1
  681. package/lib/types/physicsConstants.js +0 -12
  682. package/lib/types/physicsConstants.js.map +1 -1
  683. package/lib/types/player-visual.d.ts +45 -189
  684. package/lib/types/player-visual.d.ts.map +1 -1
  685. package/lib/types/technique.d.ts +1 -5
  686. package/lib/types/technique.d.ts.map +1 -1
  687. package/lib/types/techniqueId.d.ts +0 -1
  688. package/lib/types/techniqueId.d.ts.map +1 -1
  689. package/lib/types/techniqueId.js +0 -1
  690. package/lib/types/techniqueId.js.map +1 -1
  691. package/lib/utils/arenaWorldDimensions.d.ts +0 -11
  692. package/lib/utils/arenaWorldDimensions.d.ts.map +1 -1
  693. package/lib/utils/arenaWorldDimensions.js +0 -6
  694. package/lib/utils/arenaWorldDimensions.js.map +1 -1
  695. package/lib/utils/controlMapping.d.ts +3 -4
  696. package/lib/utils/controlMapping.d.ts.map +1 -1
  697. package/lib/utils/controlMapping.js +1 -2
  698. package/lib/utils/controlMapping.js.map +1 -1
  699. package/lib/utils/deviceDetection.d.ts +0 -5
  700. package/lib/utils/deviceDetection.d.ts.map +1 -1
  701. package/lib/utils/deviceDetection.js +0 -5
  702. package/lib/utils/deviceDetection.js.map +1 -1
  703. package/lib/utils/hapticFeedback.d.ts +23 -95
  704. package/lib/utils/hapticFeedback.d.ts.map +1 -1
  705. package/lib/utils/hapticFeedback.js +9 -39
  706. package/lib/utils/hapticFeedback.js.map +1 -1
  707. package/lib/utils/haptics.d.ts +0 -3
  708. package/lib/utils/haptics.d.ts.map +1 -1
  709. package/lib/utils/haptics.js +0 -1
  710. package/lib/utils/haptics.js.map +1 -1
  711. package/lib/utils/math.d.ts +0 -3
  712. package/lib/utils/math.d.ts.map +1 -1
  713. package/lib/utils/math.js +0 -2
  714. package/lib/utils/math.js.map +1 -1
  715. package/lib/utils/mobileLayoutHelpers.d.ts +0 -3
  716. package/lib/utils/mobileLayoutHelpers.d.ts.map +1 -1
  717. package/lib/utils/mobileLayoutHelpers.js +0 -1
  718. package/lib/utils/mobileLayoutHelpers.js.map +1 -1
  719. package/lib/utils/mobileUIUtils.d.ts +5 -100
  720. package/lib/utils/mobileUIUtils.d.ts.map +1 -1
  721. package/lib/utils/mobileUIUtils.js +0 -9
  722. package/lib/utils/mobileUIUtils.js.map +1 -1
  723. package/lib/utils/physicalAttributeValidation.d.ts.map +1 -1
  724. package/lib/utils/player3DHelpers.d.ts.map +1 -1
  725. package/lib/utils/player3DHelpers.js.map +1 -1
  726. package/lib/utils/responsiveLayoutHelpers.d.ts +0 -65
  727. package/lib/utils/responsiveLayoutHelpers.d.ts.map +1 -1
  728. package/lib/utils/responsiveLayoutHelpers.js +0 -65
  729. package/lib/utils/responsiveLayoutHelpers.js.map +1 -1
  730. package/lib/utils/responsiveOrientationConstants.d.ts +0 -7
  731. package/lib/utils/responsiveOrientationConstants.d.ts.map +1 -1
  732. package/lib/utils/responsiveOrientationConstants.js +0 -7
  733. package/lib/utils/responsiveOrientationConstants.js.map +1 -1
  734. package/lib/utils/safeAreaUtils.d.ts +0 -6
  735. package/lib/utils/safeAreaUtils.d.ts.map +1 -1
  736. package/lib/utils/safeAreaUtils.js +0 -2
  737. package/lib/utils/safeAreaUtils.js.map +1 -1
  738. package/lib/utils/sharedPhysicsConfig.d.ts +0 -4
  739. package/lib/utils/sharedPhysicsConfig.d.ts.map +1 -1
  740. package/lib/utils/sharedPhysicsConfig.js +0 -2
  741. package/lib/utils/sharedPhysicsConfig.js.map +1 -1
  742. package/lib/utils/skeletonScaling.d.ts +0 -9
  743. package/lib/utils/skeletonScaling.d.ts.map +1 -1
  744. package/lib/utils/skeletonScaling.js +0 -1
  745. package/lib/utils/skeletonScaling.js.map +1 -1
  746. package/package.json +8 -8
@@ -38,7 +38,6 @@ var DEFAULT_INJURY_MOVEMENT_CONFIG = {
38
38
  * console.log(`Status: ${result.statusText.korean} | ${result.statusText.english}`);
39
39
  * ```
40
40
  *
41
- * @public
42
41
  * @category Movement System
43
42
  * @korean 손상기반이동수정자
44
43
  */
@@ -93,7 +92,6 @@ var InjuryMovementModifier = class InjuryMovementModifier {
93
92
  * @param painLevel - Current pain level (0-100)
94
93
  * @returns Complete movement calculation result
95
94
  *
96
- * @public
97
95
  * @korean 이동속도계산
98
96
  */
99
97
  calculateMovementSpeed(baseSpeed, bodyPartHealth, stance, painLevel) {
@@ -181,7 +179,6 @@ var InjuryMovementModifier = class InjuryMovementModifier {
181
179
  * @param stance - Current trigram stance
182
180
  * @returns Speed multiplier (0.8-1.25), defaults to 1.0 for unknown stances
183
181
  *
184
- * @public
185
182
  */
186
183
  getStanceSpeedModifier(stance) {
187
184
  const modifier = STANCE_SPEED_MODIFIERS[stance];
@@ -257,7 +254,6 @@ var InjuryMovementModifier = class InjuryMovementModifier {
257
254
  * @param bodyPartHealth - Current body part health
258
255
  * @returns True if limping animation should play
259
256
  *
260
- * @public
261
257
  */
262
258
  shouldLimp(bodyPartHealth) {
263
259
  return Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight) < this.config.legThresholds.normal;
@@ -272,7 +268,6 @@ var InjuryMovementModifier = class InjuryMovementModifier {
272
268
  * @param bodyPartHealth - Current body part health
273
269
  * @returns True if severe limp (leg health < 30%)
274
270
  *
275
- * @public
276
271
  */
277
272
  hasSevereLimp(bodyPartHealth) {
278
273
  return Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight) < this.config.legThresholds.limping;
@@ -287,7 +282,6 @@ var InjuryMovementModifier = class InjuryMovementModifier {
287
282
  * @param bodyPartHealth - Current body part health
288
283
  * @returns Bilingual injury description
289
284
  *
290
- * @public
291
285
  */
292
286
  getInjuryDescription(bodyPartHealth) {
293
287
  const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);
@@ -300,7 +294,6 @@ var InjuryMovementModifier = class InjuryMovementModifier {
300
294
  /**
301
295
  * Singleton instance for global access.
302
296
  *
303
- * @public
304
297
  */
305
298
  var injuryMovementModifier = new InjuryMovementModifier();
306
299
  //#endregion
@@ -1 +1 @@
1
- {"version":3,"file":"InjuryMovementModifier.js","names":[],"sources":["../../../src/systems/movement/InjuryMovementModifier.ts"],"sourcesContent":["/**\n * Injury-Based Movement Modifier System\n * \n * **Korean**: 손상 기반 이동 시스템 (Injury-Based Movement System)\n * \n * Dynamically calculates movement speed modifiers based on leg injuries, torso\n * damage, stance configuration, and pain levels. Part of the 12 combat realism\n * systems for authentic Korean martial arts gameplay.\n * \n * ## Movement Speed Calculation\n * \n * Base speed is modified by multiple factors:\n * - **Leg Injuries**: 0-100% penalty based on health\n * - **Torso Injuries**: 0-30% minor penalty\n * - **Both Legs Injured**: Additional 20% cumulative penalty\n * - **Stance Modifiers**: -20% (defensive) to +25% (offensive)\n * - **Pain Overload**: -15% when pain ≥ 80\n * \n * ## Injury Severity Thresholds\n * \n * | Leg Health | State | Speed Penalty |\n * |-----------|-------|---------------|\n * | 70-100% | Normal | 0% |\n * | 30-69% | Limping | 0-40% |\n * | 10-29% | Severe Limp | 40-80% |\n * | 0-9% | Critical | 80-100% |\n * \n * @module systems/movement/InjuryMovementModifier\n * @category Movement System\n * @korean 손상기반이동\n */\n\nimport type { TrigramStance } from \"@/types/common\";\nimport type { BodyPartHealth } from \"../bodypart/types\";\nimport { STANCE_SPEED_MODIFIERS } from \"../physics/MovementPhysics\";\n\n/**\n * Configuration for injury-based movement calculations.\n * \n * **Korean**: 손상 이동 설정\n * \n * @public\n * @category Movement System\n */\nexport interface InjuryMovementConfig {\n /** Leg health thresholds for injury states */\n readonly legThresholds: {\n readonly normal: number; // 70% - no penalty\n readonly limping: number; // 30% - start of severe penalty\n readonly critical: number; // 10% - near-maximum penalty\n };\n /** Maximum torso injury penalty (0.3 = 30%) */\n readonly maxTorsoPenalty: number;\n /** Both legs injured cumulative penalty multiplier (0.8 = -20%) */\n readonly bothLegsInjuredMultiplier: number;\n /** Pain overload threshold (80) */\n readonly painOverloadThreshold: number;\n /** Pain overload penalty multiplier (0.85 = -15%) */\n readonly painOverloadMultiplier: number;\n /** Minimum speed multiplier (0.1 = 10% of base speed) */\n readonly minSpeedMultiplier: number;\n}\n\n/**\n * Deep partial type for InjuryMovementConfig to support partial overrides.\n * Allows callers to override individual threshold values without providing all.\n * \n * @public\n * @category Movement System\n */\nexport type PartialInjuryMovementConfig = {\n readonly legThresholds?: Partial<InjuryMovementConfig[\"legThresholds\"]>;\n readonly maxTorsoPenalty?: number;\n readonly bothLegsInjuredMultiplier?: number;\n readonly painOverloadThreshold?: number;\n readonly painOverloadMultiplier?: number;\n readonly minSpeedMultiplier?: number;\n};\n\n/**\n * Default configuration matching acceptance criteria.\n */\nexport const DEFAULT_INJURY_MOVEMENT_CONFIG: InjuryMovementConfig = {\n legThresholds: {\n normal: 70,\n limping: 30,\n critical: 10,\n },\n maxTorsoPenalty: 0.3,\n bothLegsInjuredMultiplier: 0.8,\n painOverloadThreshold: 80,\n painOverloadMultiplier: 0.85,\n minSpeedMultiplier: 0.1,\n} as const;\n\n/**\n * Result of injury-based movement calculation.\n * \n * **Korean**: 손상 이동 결과\n * \n * @public\n * @category Movement System\n */\nexport interface InjuryMovementResult {\n /** Final speed in units/second */\n readonly finalSpeed: number;\n /** Combined speed multiplier (0.1-1.0+) */\n readonly speedMultiplier: number;\n /** Breakdown of penalty sources */\n readonly penalties: {\n readonly leftLegPenalty: number;\n readonly rightLegPenalty: number;\n readonly torsoPenalty: number;\n readonly bothLegsInjured: boolean;\n readonly stanceModifier: number;\n readonly painOverload: boolean;\n };\n /** Whether player is limping */\n readonly isLimping: boolean;\n /** Whether player has severe limp */\n readonly isSevereLimp: boolean;\n /** Bilingual status text */\n readonly statusText: {\n readonly korean: string;\n readonly english: string;\n };\n}\n\n/**\n * Injury-Based Movement Modifier System.\n * \n * **Korean**: 손상 기반 이동 수정자 시스템\n * \n * Calculates dynamic movement speed based on injuries, stance, and pain.\n * Integrates with MovementPhysics to apply realistic combat trauma effects.\n * \n * @example\n * ```typescript\n * const modifier = new InjuryMovementModifier();\n * \n * const result = modifier.calculateMovementSpeed(\n * 5.0, // base speed\n * bodyPartHealth, // current health\n * TrigramStance.GEON, // current stance\n * 65 // pain level\n * );\n * \n * console.log(`Speed: ${result.finalSpeed} m/s`);\n * console.log(`Status: ${result.statusText.korean} | ${result.statusText.english}`);\n * ```\n * \n * @public\n * @category Movement System\n * @korean 손상기반이동수정자\n */\nexport class InjuryMovementModifier {\n private readonly config: InjuryMovementConfig;\n\n /**\n * Threshold for determining if both legs are significantly injured.\n * Uses epsilon to avoid floating-point rounding issues at boundary.\n * \n * @private\n */\n private static readonly BOTH_LEGS_THRESHOLD = 0.3 + 1e-10;\n\n /**\n * Creates a new InjuryMovementModifier with optional configuration.\n * \n * @param config - Optional configuration overrides (supports partial threshold overrides)\n */\n constructor(config?: PartialInjuryMovementConfig) {\n // Deep merge leg thresholds to prevent partial overrides from breaking the config.\n // Use ?? to avoid undefined values overwriting defaults when exactOptionalPropertyTypes is disabled.\n const mergedLegThresholds = {\n normal:\n config?.legThresholds?.normal ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.legThresholds.normal,\n limping:\n config?.legThresholds?.limping ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.legThresholds.limping,\n critical:\n config?.legThresholds?.critical ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.legThresholds.critical,\n };\n\n const mergedConfig: InjuryMovementConfig = {\n legThresholds: mergedLegThresholds,\n maxTorsoPenalty:\n config?.maxTorsoPenalty ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.maxTorsoPenalty,\n bothLegsInjuredMultiplier:\n config?.bothLegsInjuredMultiplier ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.bothLegsInjuredMultiplier,\n painOverloadThreshold:\n config?.painOverloadThreshold ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.painOverloadThreshold,\n painOverloadMultiplier:\n config?.painOverloadMultiplier ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.painOverloadMultiplier,\n minSpeedMultiplier:\n config?.minSpeedMultiplier ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.minSpeedMultiplier,\n };\n\n // Development-mode sanity check: ensure thresholds are finite and ordered\n if (process.env.NODE_ENV !== \"production\") {\n const { normal, limping, critical } = mergedConfig.legThresholds;\n const allFinite =\n Number.isFinite(normal) &&\n Number.isFinite(limping) &&\n Number.isFinite(critical);\n const ordered = normal >= limping && limping >= critical;\n\n if (!allFinite || !ordered) {\n // Non-throwing warning to avoid breaking existing behavior\n console.warn(\n \"[InjuryMovementModifier] Invalid legThresholds configuration detected:\",\n mergedConfig.legThresholds\n );\n }\n }\n\n this.config = mergedConfig;\n }\n\n /**\n * Calculate modified movement speed based on all injury factors.\n * \n * **Korean**: 이동 속도 계산\n * \n * Applies penalties from:\n * 1. Leg injuries (primary factor)\n * 2. Torso injuries (minor factor)\n * 3. Both legs injured (cumulative penalty)\n * 4. Stance modifiers\n * 5. Pain overload\n * \n * @param baseSpeed - Base movement speed (m/s)\n * @param bodyPartHealth - Current body part health values\n * @param stance - Current trigram stance\n * @param painLevel - Current pain level (0-100)\n * @returns Complete movement calculation result\n * \n * @public\n * @korean 이동속도계산\n */\n public calculateMovementSpeed(\n baseSpeed: number,\n bodyPartHealth: BodyPartHealth,\n stance: TrigramStance,\n painLevel: number\n ): InjuryMovementResult {\n // Calculate individual leg penalties\n const leftLegPenalty = this.calculateLegPenalty(bodyPartHealth.legLeft);\n const rightLegPenalty = this.calculateLegPenalty(bodyPartHealth.legRight);\n\n // Use worst leg penalty as base\n const baseLegPenalty = Math.max(leftLegPenalty, rightLegPenalty);\n let speedMultiplier = 1.0 - baseLegPenalty;\n\n // Check if both legs are significantly injured using centralized method\n const bothLegsInjured = this.areBothLegsInjured(leftLegPenalty, rightLegPenalty);\n if (bothLegsInjured) {\n // Additional 20% penalty when both legs injured\n speedMultiplier *= this.config.bothLegsInjuredMultiplier;\n }\n\n // Calculate torso penalty (minor effect, 0-30% max)\n const avgTorsoHealth = (bodyPartHealth.torsoUpper + bodyPartHealth.torsoLower) / 2;\n // Clamp torso health to prevent negative penalties or exceeding max penalty\n const clampedAvgTorsoHealth = Math.min(100, Math.max(0, avgTorsoHealth));\n const torsoPenalty = ((100 - clampedAvgTorsoHealth) / 100) * this.config.maxTorsoPenalty;\n speedMultiplier *= (1 - torsoPenalty);\n\n // Apply stance modifier\n const stanceModifier = this.getStanceSpeedModifier(stance);\n speedMultiplier *= stanceModifier;\n\n // Apply pain overload penalty if applicable (>= threshold, not just >)\n const painOverload = painLevel >= this.config.painOverloadThreshold;\n if (painOverload) {\n speedMultiplier *= this.config.painOverloadMultiplier; // -15%\n }\n\n // Clamp to minimum speed (10% of base)\n speedMultiplier = Math.max(speedMultiplier, this.config.minSpeedMultiplier);\n\n // Calculate final speed\n const finalSpeed = baseSpeed * speedMultiplier;\n\n // Determine injury state for status text based on worst leg health\n // This ensures status matches the actual movement penalty (which uses worst leg)\n // Note: isLimping = true when leg health is in range [30-70) (limping range with 0-40% penalty)\n // isSevereLimp = true when leg health is < 30 (severe/critical with 40-100% penalty)\n const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);\n const isLimping =\n worstLegHealth < this.config.legThresholds.normal &&\n worstLegHealth >= this.config.legThresholds.limping;\n const isSevereLimp = worstLegHealth < this.config.legThresholds.limping;\n\n // Generate status text\n const statusText = this.generateStatusText(worstLegHealth, bothLegsInjured, painOverload);\n\n return {\n finalSpeed,\n speedMultiplier,\n penalties: {\n leftLegPenalty,\n rightLegPenalty,\n torsoPenalty,\n bothLegsInjured,\n stanceModifier,\n painOverload,\n },\n isLimping,\n isSevereLimp,\n statusText,\n };\n }\n\n /**\n * Calculate movement penalty from leg injury severity.\n * \n * **Korean**: 다리 부상 페널티 계산\n * \n * Progressive penalty scaling:\n * - 100-70%: No penalty (0%)\n * - 70-30%: Linear scaling (0-40%)\n * - 30-10%: Accelerated scaling (40-80%)\n * - 10-0%: Critical scaling (80-100%)\n * \n * @param legHealth - Leg health (0-100)\n * @returns Penalty factor (0.0-1.0), clamped to valid range\n * \n * @private\n */\n private calculateLegPenalty(legHealth: number): number {\n const { normal, limping, critical } = this.config.legThresholds;\n\n // Clamp input health to valid range to prevent runaway penalties\n const clampedHealth = Math.min(Math.max(legHealth, 0), 100);\n\n let penalty: number;\n\n if (clampedHealth >= normal) {\n // 70-100%: No penalty\n penalty = 0;\n } else if (clampedHealth >= limping) {\n // 30-70%: 0-40% penalty (linear)\n const healthRange = normal - limping;\n // Guard against division by zero if thresholds are misconfigured\n const healthFactor = healthRange > 0 \n ? (normal - clampedHealth) / healthRange \n : 0;\n penalty = healthFactor * 0.4;\n } else if (clampedHealth >= critical) {\n // 10-30%: 40-80% penalty (accelerated)\n const healthRange = limping - critical;\n // Guard against division by zero if thresholds are misconfigured\n const healthFactor = healthRange > 0 \n ? (limping - clampedHealth) / healthRange \n : 0;\n penalty = 0.4 + (healthFactor * 0.4);\n } else {\n // 0-10%: 80-100% penalty (critical)\n // Guard against division by zero if critical is 0\n const healthFactor = critical > 0 \n ? (critical - clampedHealth) / critical \n : 1;\n penalty = 0.8 + (healthFactor * 0.2);\n }\n\n // Ensure returned penalty is always within [0, 1]\n return Math.min(Math.max(penalty, 0), 1);\n }\n\n /**\n * Checks if both legs are significantly injured (>30% penalty each).\n * Uses epsilon-based comparison for floating-point robustness.\n * \n * @param leftLegPenalty - Penalty for left leg (0-1)\n * @param rightLegPenalty - Penalty for right leg (0-1)\n * @returns True if both legs are significantly injured\n * @private\n */\n private areBothLegsInjured(leftLegPenalty: number, rightLegPenalty: number): boolean {\n return leftLegPenalty >= InjuryMovementModifier.BOTH_LEGS_THRESHOLD && \n rightLegPenalty >= InjuryMovementModifier.BOTH_LEGS_THRESHOLD;\n }\n\n /**\n * Get stance-based speed modifier.\n * \n * **Korean**: 자세 속도 배수 가져오기\n * \n * @param stance - Current trigram stance\n * @returns Speed multiplier (0.8-1.25), defaults to 1.0 for unknown stances\n * \n * @public\n */\n public getStanceSpeedModifier(stance: TrigramStance): number {\n const modifier = STANCE_SPEED_MODIFIERS[stance];\n\n // Defensive fallback for unknown stances (e.g., test/invalid values)\n if (modifier == null) {\n // Runtime-safe environment check (works in both Node and browser/Vite environments)\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV === \"development\"\n ) {\n console.warn(\n `[InjuryMovementModifier] Unknown stance \"${String(\n stance\n )}\" received in getStanceSpeedModifier; defaulting to 1.0.`\n );\n }\n return 1.0;\n }\n\n return modifier;\n }\n\n /**\n * Generate bilingual status text based on injury state.\n * \n * **Korean**: 상태 텍스트 생성\n * \n * @param legHealthForStatus - Leg health percentage used for status determination (typically worst leg)\n * @param bothLegsInjured - Whether both legs are significantly injured\n * @param painOverload - Whether pain is over threshold\n * @returns Bilingual status text\n * \n * @private\n */\n private generateStatusText(\n legHealthForStatus: number,\n bothLegsInjured: boolean,\n painOverload: boolean\n ): { korean: string; english: string } {\n const { normal, limping, critical } = this.config.legThresholds;\n\n if (legHealthForStatus < critical) {\n const painText = painOverload ? \" | 고통 과부하\" : \"\";\n const painTextEn = painOverload ? \" | Pain Overload\" : \"\";\n const baseKorean = bothLegsInjured ? \"심각한 부상 | 양 다리\" : \"심각한 부상\";\n const baseEnglish = bothLegsInjured ? \"Critical Injury | Both Legs\" : \"Critical Injury\";\n return {\n korean: `${baseKorean}${painText}`,\n english: `${baseEnglish}${painTextEn}`,\n };\n } else if (legHealthForStatus < limping) {\n const painText = painOverload ? \" | 고통 과부하\" : \"\";\n const painTextEn = painOverload ? \" | Pain Overload\" : \"\";\n const baseKorean = bothLegsInjured ? \"중증 절름거림 | 양 다리\" : \"중증 절름거림\";\n const baseEnglish = bothLegsInjured ? \"Severe Limping | Both Legs\" : \"Severe Limping\";\n return {\n korean: `${baseKorean}${painText}`,\n english: `${baseEnglish}${painTextEn}`,\n };\n } else if (legHealthForStatus < normal) {\n const statusKrParts = [\"절름거림\"];\n const statusEnParts = [\"Limping\"];\n\n if (bothLegsInjured) {\n statusKrParts.push(\"양 다리\");\n statusEnParts.push(\"Both Legs\");\n }\n\n if (painOverload) {\n statusKrParts.push(\"고통 과부하\");\n statusEnParts.push(\"Pain Overload\");\n }\n\n return {\n korean: statusKrParts.join(\" | \"),\n english: statusEnParts.join(\" | \"),\n };\n } else if (painOverload) {\n return {\n korean: \"고통 과부하\",\n english: \"Pain Overload\",\n };\n } else {\n return {\n korean: \"정상\",\n english: \"Normal\",\n };\n }\n }\n\n /**\n * Check if player should display limping animation.\n * \n * **Korean**: 절름거림 확인\n * \n * Uses worst leg health to match movement penalty behavior.\n * \n * @param bodyPartHealth - Current body part health\n * @returns True if limping animation should play\n * \n * @public\n */\n public shouldLimp(bodyPartHealth: BodyPartHealth): boolean {\n const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);\n return worstLegHealth < this.config.legThresholds.normal;\n }\n\n /**\n * Check if player has severe limp.\n * \n * **Korean**: 중증 절름거림 확인\n * \n * Uses worst leg health to match movement penalty behavior.\n * \n * @param bodyPartHealth - Current body part health\n * @returns True if severe limp (leg health < 30%)\n * \n * @public\n */\n public hasSevereLimp(bodyPartHealth: BodyPartHealth): boolean {\n const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);\n return worstLegHealth < this.config.legThresholds.limping;\n }\n\n /**\n * Get current injury state description.\n * \n * **Korean**: 부상 상태 설명\n * \n * Uses worst leg health to match movement penalty behavior.\n * \n * @param bodyPartHealth - Current body part health\n * @returns Bilingual injury description\n * \n * @public\n */\n public getInjuryDescription(bodyPartHealth: BodyPartHealth): {\n korean: string;\n english: string;\n } {\n const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);\n const leftLegPenalty = this.calculateLegPenalty(bodyPartHealth.legLeft);\n const rightLegPenalty = this.calculateLegPenalty(bodyPartHealth.legRight);\n const bothLegsInjured = this.areBothLegsInjured(leftLegPenalty, rightLegPenalty);\n\n return this.generateStatusText(worstLegHealth, bothLegsInjured, false);\n }\n}\n\n/**\n * Singleton instance for global access.\n * \n * @public\n */\nexport const injuryMovementModifier = new InjuryMovementModifier();\n"],"mappings":"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"}
1
+ {"version":3,"file":"InjuryMovementModifier.js","names":[],"sources":["../../../src/systems/movement/InjuryMovementModifier.ts"],"sourcesContent":["/**\n * Injury-Based Movement Modifier System\n * \n * **Korean**: 손상 기반 이동 시스템 (Injury-Based Movement System)\n * \n * Dynamically calculates movement speed modifiers based on leg injuries, torso\n * damage, stance configuration, and pain levels. Part of the 12 combat realism\n * systems for authentic Korean martial arts gameplay.\n * \n * ## Movement Speed Calculation\n * \n * Base speed is modified by multiple factors:\n * - **Leg Injuries**: 0-100% penalty based on health\n * - **Torso Injuries**: 0-30% minor penalty\n * - **Both Legs Injured**: Additional 20% cumulative penalty\n * - **Stance Modifiers**: -20% (defensive) to +25% (offensive)\n * - **Pain Overload**: -15% when pain ≥ 80\n * \n * ## Injury Severity Thresholds\n * \n * | Leg Health | State | Speed Penalty |\n * |-----------|-------|---------------|\n * | 70-100% | Normal | 0% |\n * | 30-69% | Limping | 0-40% |\n * | 10-29% | Severe Limp | 40-80% |\n * | 0-9% | Critical | 80-100% |\n * \n * @module systems/movement/InjuryMovementModifier\n * @category Movement System\n * @korean 손상기반이동\n */\n\nimport type { TrigramStance } from \"@/types/common\";\nimport type { BodyPartHealth } from \"../bodypart/types\";\nimport { STANCE_SPEED_MODIFIERS } from \"../physics/MovementPhysics\";\n\n/**\n * Configuration for injury-based movement calculations.\n * \n * **Korean**: 손상 이동 설정\n * \n * @category Movement System\n */\nexport interface InjuryMovementConfig {\n /** Leg health thresholds for injury states */\n readonly legThresholds: {\n readonly normal: number; // 70% - no penalty\n readonly limping: number; // 30% - start of severe penalty\n readonly critical: number; // 10% - near-maximum penalty\n };\n /** Maximum torso injury penalty (0.3 = 30%) */\n readonly maxTorsoPenalty: number;\n /** Both legs injured cumulative penalty multiplier (0.8 = -20%) */\n readonly bothLegsInjuredMultiplier: number;\n /** Pain overload threshold (80) */\n readonly painOverloadThreshold: number;\n /** Pain overload penalty multiplier (0.85 = -15%) */\n readonly painOverloadMultiplier: number;\n /** Minimum speed multiplier (0.1 = 10% of base speed) */\n readonly minSpeedMultiplier: number;\n}\n\n/**\n * Deep partial type for InjuryMovementConfig to support partial overrides.\n * Allows callers to override individual threshold values without providing all.\n * \n * @category Movement System\n */\nexport type PartialInjuryMovementConfig = {\n readonly legThresholds?: Partial<InjuryMovementConfig[\"legThresholds\"]>;\n readonly maxTorsoPenalty?: number;\n readonly bothLegsInjuredMultiplier?: number;\n readonly painOverloadThreshold?: number;\n readonly painOverloadMultiplier?: number;\n readonly minSpeedMultiplier?: number;\n};\n\n/**\n * Default configuration matching acceptance criteria.\n */\nexport const DEFAULT_INJURY_MOVEMENT_CONFIG: InjuryMovementConfig = {\n legThresholds: {\n normal: 70,\n limping: 30,\n critical: 10,\n },\n maxTorsoPenalty: 0.3,\n bothLegsInjuredMultiplier: 0.8,\n painOverloadThreshold: 80,\n painOverloadMultiplier: 0.85,\n minSpeedMultiplier: 0.1,\n} as const;\n\n/**\n * Result of injury-based movement calculation.\n * \n * **Korean**: 손상 이동 결과\n * \n * @category Movement System\n */\nexport interface InjuryMovementResult {\n /** Final speed in units/second */\n readonly finalSpeed: number;\n /** Combined speed multiplier (0.1-1.0+) */\n readonly speedMultiplier: number;\n /** Breakdown of penalty sources */\n readonly penalties: {\n readonly leftLegPenalty: number;\n readonly rightLegPenalty: number;\n readonly torsoPenalty: number;\n readonly bothLegsInjured: boolean;\n readonly stanceModifier: number;\n readonly painOverload: boolean;\n };\n /** Whether player is limping */\n readonly isLimping: boolean;\n /** Whether player has severe limp */\n readonly isSevereLimp: boolean;\n /** Bilingual status text */\n readonly statusText: {\n readonly korean: string;\n readonly english: string;\n };\n}\n\n/**\n * Injury-Based Movement Modifier System.\n * \n * **Korean**: 손상 기반 이동 수정자 시스템\n * \n * Calculates dynamic movement speed based on injuries, stance, and pain.\n * Integrates with MovementPhysics to apply realistic combat trauma effects.\n * \n * @example\n * ```typescript\n * const modifier = new InjuryMovementModifier();\n * \n * const result = modifier.calculateMovementSpeed(\n * 5.0, // base speed\n * bodyPartHealth, // current health\n * TrigramStance.GEON, // current stance\n * 65 // pain level\n * );\n * \n * console.log(`Speed: ${result.finalSpeed} m/s`);\n * console.log(`Status: ${result.statusText.korean} | ${result.statusText.english}`);\n * ```\n * \n * @category Movement System\n * @korean 손상기반이동수정자\n */\nexport class InjuryMovementModifier {\n private readonly config: InjuryMovementConfig;\n\n /**\n * Threshold for determining if both legs are significantly injured.\n * Uses epsilon to avoid floating-point rounding issues at boundary.\n * \n * @private\n */\n private static readonly BOTH_LEGS_THRESHOLD = 0.3 + 1e-10;\n\n /**\n * Creates a new InjuryMovementModifier with optional configuration.\n * \n * @param config - Optional configuration overrides (supports partial threshold overrides)\n */\n constructor(config?: PartialInjuryMovementConfig) {\n // Deep merge leg thresholds to prevent partial overrides from breaking the config.\n // Use ?? to avoid undefined values overwriting defaults when exactOptionalPropertyTypes is disabled.\n const mergedLegThresholds = {\n normal:\n config?.legThresholds?.normal ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.legThresholds.normal,\n limping:\n config?.legThresholds?.limping ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.legThresholds.limping,\n critical:\n config?.legThresholds?.critical ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.legThresholds.critical,\n };\n\n const mergedConfig: InjuryMovementConfig = {\n legThresholds: mergedLegThresholds,\n maxTorsoPenalty:\n config?.maxTorsoPenalty ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.maxTorsoPenalty,\n bothLegsInjuredMultiplier:\n config?.bothLegsInjuredMultiplier ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.bothLegsInjuredMultiplier,\n painOverloadThreshold:\n config?.painOverloadThreshold ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.painOverloadThreshold,\n painOverloadMultiplier:\n config?.painOverloadMultiplier ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.painOverloadMultiplier,\n minSpeedMultiplier:\n config?.minSpeedMultiplier ??\n DEFAULT_INJURY_MOVEMENT_CONFIG.minSpeedMultiplier,\n };\n\n // Development-mode sanity check: ensure thresholds are finite and ordered\n if (process.env.NODE_ENV !== \"production\") {\n const { normal, limping, critical } = mergedConfig.legThresholds;\n const allFinite =\n Number.isFinite(normal) &&\n Number.isFinite(limping) &&\n Number.isFinite(critical);\n const ordered = normal >= limping && limping >= critical;\n\n if (!allFinite || !ordered) {\n // Non-throwing warning to avoid breaking existing behavior\n console.warn(\n \"[InjuryMovementModifier] Invalid legThresholds configuration detected:\",\n mergedConfig.legThresholds\n );\n }\n }\n\n this.config = mergedConfig;\n }\n\n /**\n * Calculate modified movement speed based on all injury factors.\n * \n * **Korean**: 이동 속도 계산\n * \n * Applies penalties from:\n * 1. Leg injuries (primary factor)\n * 2. Torso injuries (minor factor)\n * 3. Both legs injured (cumulative penalty)\n * 4. Stance modifiers\n * 5. Pain overload\n * \n * @param baseSpeed - Base movement speed (m/s)\n * @param bodyPartHealth - Current body part health values\n * @param stance - Current trigram stance\n * @param painLevel - Current pain level (0-100)\n * @returns Complete movement calculation result\n * \n * @korean 이동속도계산\n */\n public calculateMovementSpeed(\n baseSpeed: number,\n bodyPartHealth: BodyPartHealth,\n stance: TrigramStance,\n painLevel: number\n ): InjuryMovementResult {\n // Calculate individual leg penalties\n const leftLegPenalty = this.calculateLegPenalty(bodyPartHealth.legLeft);\n const rightLegPenalty = this.calculateLegPenalty(bodyPartHealth.legRight);\n\n // Use worst leg penalty as base\n const baseLegPenalty = Math.max(leftLegPenalty, rightLegPenalty);\n let speedMultiplier = 1.0 - baseLegPenalty;\n\n // Check if both legs are significantly injured using centralized method\n const bothLegsInjured = this.areBothLegsInjured(leftLegPenalty, rightLegPenalty);\n if (bothLegsInjured) {\n // Additional 20% penalty when both legs injured\n speedMultiplier *= this.config.bothLegsInjuredMultiplier;\n }\n\n // Calculate torso penalty (minor effect, 0-30% max)\n const avgTorsoHealth = (bodyPartHealth.torsoUpper + bodyPartHealth.torsoLower) / 2;\n // Clamp torso health to prevent negative penalties or exceeding max penalty\n const clampedAvgTorsoHealth = Math.min(100, Math.max(0, avgTorsoHealth));\n const torsoPenalty = ((100 - clampedAvgTorsoHealth) / 100) * this.config.maxTorsoPenalty;\n speedMultiplier *= (1 - torsoPenalty);\n\n // Apply stance modifier\n const stanceModifier = this.getStanceSpeedModifier(stance);\n speedMultiplier *= stanceModifier;\n\n // Apply pain overload penalty if applicable (>= threshold, not just >)\n const painOverload = painLevel >= this.config.painOverloadThreshold;\n if (painOverload) {\n speedMultiplier *= this.config.painOverloadMultiplier; // -15%\n }\n\n // Clamp to minimum speed (10% of base)\n speedMultiplier = Math.max(speedMultiplier, this.config.minSpeedMultiplier);\n\n // Calculate final speed\n const finalSpeed = baseSpeed * speedMultiplier;\n\n // Determine injury state for status text based on worst leg health\n // This ensures status matches the actual movement penalty (which uses worst leg)\n // Note: isLimping = true when leg health is in range [30-70) (limping range with 0-40% penalty)\n // isSevereLimp = true when leg health is < 30 (severe/critical with 40-100% penalty)\n const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);\n const isLimping =\n worstLegHealth < this.config.legThresholds.normal &&\n worstLegHealth >= this.config.legThresholds.limping;\n const isSevereLimp = worstLegHealth < this.config.legThresholds.limping;\n\n // Generate status text\n const statusText = this.generateStatusText(worstLegHealth, bothLegsInjured, painOverload);\n\n return {\n finalSpeed,\n speedMultiplier,\n penalties: {\n leftLegPenalty,\n rightLegPenalty,\n torsoPenalty,\n bothLegsInjured,\n stanceModifier,\n painOverload,\n },\n isLimping,\n isSevereLimp,\n statusText,\n };\n }\n\n /**\n * Calculate movement penalty from leg injury severity.\n * \n * **Korean**: 다리 부상 페널티 계산\n * \n * Progressive penalty scaling:\n * - 100-70%: No penalty (0%)\n * - 70-30%: Linear scaling (0-40%)\n * - 30-10%: Accelerated scaling (40-80%)\n * - 10-0%: Critical scaling (80-100%)\n * \n * @param legHealth - Leg health (0-100)\n * @returns Penalty factor (0.0-1.0), clamped to valid range\n * \n * @private\n */\n private calculateLegPenalty(legHealth: number): number {\n const { normal, limping, critical } = this.config.legThresholds;\n\n // Clamp input health to valid range to prevent runaway penalties\n const clampedHealth = Math.min(Math.max(legHealth, 0), 100);\n\n let penalty: number;\n\n if (clampedHealth >= normal) {\n // 70-100%: No penalty\n penalty = 0;\n } else if (clampedHealth >= limping) {\n // 30-70%: 0-40% penalty (linear)\n const healthRange = normal - limping;\n // Guard against division by zero if thresholds are misconfigured\n const healthFactor = healthRange > 0 \n ? (normal - clampedHealth) / healthRange \n : 0;\n penalty = healthFactor * 0.4;\n } else if (clampedHealth >= critical) {\n // 10-30%: 40-80% penalty (accelerated)\n const healthRange = limping - critical;\n // Guard against division by zero if thresholds are misconfigured\n const healthFactor = healthRange > 0 \n ? (limping - clampedHealth) / healthRange \n : 0;\n penalty = 0.4 + (healthFactor * 0.4);\n } else {\n // 0-10%: 80-100% penalty (critical)\n // Guard against division by zero if critical is 0\n const healthFactor = critical > 0 \n ? (critical - clampedHealth) / critical \n : 1;\n penalty = 0.8 + (healthFactor * 0.2);\n }\n\n // Ensure returned penalty is always within [0, 1]\n return Math.min(Math.max(penalty, 0), 1);\n }\n\n /**\n * Checks if both legs are significantly injured (>30% penalty each).\n * Uses epsilon-based comparison for floating-point robustness.\n * \n * @param leftLegPenalty - Penalty for left leg (0-1)\n * @param rightLegPenalty - Penalty for right leg (0-1)\n * @returns True if both legs are significantly injured\n * @private\n */\n private areBothLegsInjured(leftLegPenalty: number, rightLegPenalty: number): boolean {\n return leftLegPenalty >= InjuryMovementModifier.BOTH_LEGS_THRESHOLD && \n rightLegPenalty >= InjuryMovementModifier.BOTH_LEGS_THRESHOLD;\n }\n\n /**\n * Get stance-based speed modifier.\n * \n * **Korean**: 자세 속도 배수 가져오기\n * \n * @param stance - Current trigram stance\n * @returns Speed multiplier (0.8-1.25), defaults to 1.0 for unknown stances\n * \n */\n public getStanceSpeedModifier(stance: TrigramStance): number {\n const modifier = STANCE_SPEED_MODIFIERS[stance];\n\n // Defensive fallback for unknown stances (e.g., test/invalid values)\n if (modifier == null) {\n // Runtime-safe environment check (works in both Node and browser/Vite environments)\n if (\n typeof process !== \"undefined\" &&\n process.env?.NODE_ENV === \"development\"\n ) {\n console.warn(\n `[InjuryMovementModifier] Unknown stance \"${String(\n stance\n )}\" received in getStanceSpeedModifier; defaulting to 1.0.`\n );\n }\n return 1.0;\n }\n\n return modifier;\n }\n\n /**\n * Generate bilingual status text based on injury state.\n * \n * **Korean**: 상태 텍스트 생성\n * \n * @param legHealthForStatus - Leg health percentage used for status determination (typically worst leg)\n * @param bothLegsInjured - Whether both legs are significantly injured\n * @param painOverload - Whether pain is over threshold\n * @returns Bilingual status text\n * \n * @private\n */\n private generateStatusText(\n legHealthForStatus: number,\n bothLegsInjured: boolean,\n painOverload: boolean\n ): { korean: string; english: string } {\n const { normal, limping, critical } = this.config.legThresholds;\n\n if (legHealthForStatus < critical) {\n const painText = painOverload ? \" | 고통 과부하\" : \"\";\n const painTextEn = painOverload ? \" | Pain Overload\" : \"\";\n const baseKorean = bothLegsInjured ? \"심각한 부상 | 양 다리\" : \"심각한 부상\";\n const baseEnglish = bothLegsInjured ? \"Critical Injury | Both Legs\" : \"Critical Injury\";\n return {\n korean: `${baseKorean}${painText}`,\n english: `${baseEnglish}${painTextEn}`,\n };\n } else if (legHealthForStatus < limping) {\n const painText = painOverload ? \" | 고통 과부하\" : \"\";\n const painTextEn = painOverload ? \" | Pain Overload\" : \"\";\n const baseKorean = bothLegsInjured ? \"중증 절름거림 | 양 다리\" : \"중증 절름거림\";\n const baseEnglish = bothLegsInjured ? \"Severe Limping | Both Legs\" : \"Severe Limping\";\n return {\n korean: `${baseKorean}${painText}`,\n english: `${baseEnglish}${painTextEn}`,\n };\n } else if (legHealthForStatus < normal) {\n const statusKrParts = [\"절름거림\"];\n const statusEnParts = [\"Limping\"];\n\n if (bothLegsInjured) {\n statusKrParts.push(\"양 다리\");\n statusEnParts.push(\"Both Legs\");\n }\n\n if (painOverload) {\n statusKrParts.push(\"고통 과부하\");\n statusEnParts.push(\"Pain Overload\");\n }\n\n return {\n korean: statusKrParts.join(\" | \"),\n english: statusEnParts.join(\" | \"),\n };\n } else if (painOverload) {\n return {\n korean: \"고통 과부하\",\n english: \"Pain Overload\",\n };\n } else {\n return {\n korean: \"정상\",\n english: \"Normal\",\n };\n }\n }\n\n /**\n * Check if player should display limping animation.\n * \n * **Korean**: 절름거림 확인\n * \n * Uses worst leg health to match movement penalty behavior.\n * \n * @param bodyPartHealth - Current body part health\n * @returns True if limping animation should play\n * \n */\n public shouldLimp(bodyPartHealth: BodyPartHealth): boolean {\n const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);\n return worstLegHealth < this.config.legThresholds.normal;\n }\n\n /**\n * Check if player has severe limp.\n * \n * **Korean**: 중증 절름거림 확인\n * \n * Uses worst leg health to match movement penalty behavior.\n * \n * @param bodyPartHealth - Current body part health\n * @returns True if severe limp (leg health < 30%)\n * \n */\n public hasSevereLimp(bodyPartHealth: BodyPartHealth): boolean {\n const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);\n return worstLegHealth < this.config.legThresholds.limping;\n }\n\n /**\n * Get current injury state description.\n * \n * **Korean**: 부상 상태 설명\n * \n * Uses worst leg health to match movement penalty behavior.\n * \n * @param bodyPartHealth - Current body part health\n * @returns Bilingual injury description\n * \n */\n public getInjuryDescription(bodyPartHealth: BodyPartHealth): {\n korean: string;\n english: string;\n } {\n const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);\n const leftLegPenalty = this.calculateLegPenalty(bodyPartHealth.legLeft);\n const rightLegPenalty = this.calculateLegPenalty(bodyPartHealth.legRight);\n const bothLegsInjured = this.areBothLegsInjured(leftLegPenalty, rightLegPenalty);\n\n return this.generateStatusText(worstLegHealth, bothLegsInjured, false);\n }\n}\n\n/**\n * Singleton instance for global access.\n * \n */\nexport const injuryMovementModifier = new InjuryMovementModifier();\n"],"mappings":"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"}
@@ -33,7 +33,6 @@ import { TrigramStance } from "../../types/common";
33
33
  * movementState.legInjuryFactor = legInjuryFactor;
34
34
  * ```
35
35
  *
36
- * @public
37
36
  * @korean 다리손상요소계산
38
37
  */
39
38
  export declare function calculateLegInjuryFactor(bodyPartHealth: BodyPartHealth): number;
@@ -67,7 +66,6 @@ export declare function calculateLegInjuryFactor(bodyPartHealth: BodyPartHealth)
67
66
  * movementPhysics.setMaxSpeed(finalSpeed);
68
67
  * ```
69
68
  *
70
- * @public
71
69
  * @korean 종합이동속도계산
72
70
  */
73
71
  export declare function calculateMovementSpeed(baseSpeed: number, bodyPartHealth: BodyPartHealth, stance: TrigramStance, painLevel: number): number;
@@ -84,7 +82,6 @@ export declare function calculateMovementSpeed(baseSpeed: number, bodyPartHealth
84
82
  * @param bodyPartHealth - Current body part health
85
83
  * @returns Speed multiplier (0.1-1.0)
86
84
  *
87
- * @public
88
85
  * @korean 손상속도배수계산
89
86
  */
90
87
  export declare function calculateInjuryMultiplier(bodyPartHealth: BodyPartHealth): number;
@@ -1 +1 @@
1
- {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/systems/movement/integration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,cAAc,GAC7B,MAAM,CAeR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,CASR;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,cAAc,GAC7B,MAAM,CAWR"}
1
+ {"version":3,"file":"integration.d.ts","sourceRoot":"","sources":["../../../src/systems/movement/integration.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE/C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,wBAAwB,CACtC,cAAc,EAAE,cAAc,GAC7B,MAAM,CAeR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,cAAc,EAC9B,MAAM,EAAE,aAAa,EACrB,SAAS,EAAE,MAAM,GAChB,MAAM,CASR;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,yBAAyB,CACvC,cAAc,EAAE,cAAc,GAC7B,MAAM,CAWR"}
@@ -34,7 +34,6 @@ import { injuryMovementModifier } from "./InjuryMovementModifier.js";
34
34
  * movementState.legInjuryFactor = legInjuryFactor;
35
35
  * ```
36
36
  *
37
- * @public
38
37
  * @korean 다리손상요소계산
39
38
  */
40
39
  function calculateLegInjuryFactor(bodyPartHealth) {
@@ -72,7 +71,6 @@ function calculateLegInjuryFactor(bodyPartHealth) {
72
71
  * movementPhysics.setMaxSpeed(finalSpeed);
73
72
  * ```
74
73
  *
75
- * @public
76
74
  * @korean 종합이동속도계산
77
75
  */
78
76
  function calculateMovementSpeed(baseSpeed, bodyPartHealth, stance, painLevel) {
@@ -91,7 +89,6 @@ function calculateMovementSpeed(baseSpeed, bodyPartHealth, stance, painLevel) {
91
89
  * @param bodyPartHealth - Current body part health
92
90
  * @returns Speed multiplier (0.1-1.0)
93
91
  *
94
- * @public
95
92
  * @korean 손상속도배수계산
96
93
  */
97
94
  function calculateInjuryMultiplier(bodyPartHealth) {
@@ -1 +1 @@
1
- {"version":3,"file":"integration.js","names":[],"sources":["../../../src/systems/movement/integration.ts"],"sourcesContent":["/**\n * Integration module for InjuryMovementModifier with MovementPhysics\n * \n * **Korean**: 손상 이동 통합 (Injury Movement Integration)\n * \n * Provides helper functions to integrate the InjuryMovementModifier system\n * with the existing MovementPhysics system.\n * \n * @module systems/movement/integration\n * @category Movement System\n * @korean 손상이동통합\n */\n\nimport { injuryMovementModifier } from \"./InjuryMovementModifier\";\nimport type { BodyPartHealth } from \"../bodypart/types\";\nimport { TrigramStance } from \"@/types/common\";\n\n/**\n * Calculate leg injury factor for MovementPhysics from body part health.\n * \n * **Korean**: 다리 손상 요소 계산\n * \n * Converts detailed body part health into a simple 0-1 injury factor\n * that MovementPhysics.MovementState expects. This allows gradual\n * migration from the old simple system to the new detailed system.\n * \n * Uses the **worst** (minimum) leg health to match the main injury system's behavior,\n * ensuring asymmetric injuries (e.g., one leg at 0%, other at 100%) are properly represented.\n * \n * @param bodyPartHealth - Current body part health\n * @returns Leg injury factor (0 = healthy, 1 = fully injured), clamped to 0-1 range\n * \n * @example\n * ```typescript\n * const legInjuryFactor = calculateLegInjuryFactor(bodyPartHealth);\n * movementState.legInjuryFactor = legInjuryFactor;\n * ```\n * \n * @public\n * @korean 다리손상요소계산\n */\nexport function calculateLegInjuryFactor(\n bodyPartHealth: BodyPartHealth\n): number {\n // Use worst (minimum) leg health to match main injury system behavior\n // This ensures asymmetric injuries are properly represented\n const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);\n \n // Clamp worst leg health to valid 0-100 range to avoid invalid injury factors\n const clampedLegHealth = Math.min(100, Math.max(0, worstLegHealth));\n\n // Normalize to 0-1 health ratio (1 = fully healthy, 0 = no health)\n const healthRatio = clampedLegHealth / 100;\n\n // Convert to 0-1 injury factor (0 = healthy, 1 = fully injured)\n // Use inverse of health ratio and clamp defensively to 0-1\n const injuryFactor = 1.0 - healthRatio;\n return Math.min(1, Math.max(0, injuryFactor));\n}\n\n/**\n * Calculate comprehensive movement speed with all injury modifiers.\n * \n * **Korean**: 종합 이동 속도 계산\n * \n * This is the recommended function for full integration with the new\n * injury system. It applies all modifiers including leg injuries,\n * torso damage, stance bonuses, and pain penalties.\n * \n * Uses the shared singleton instance to avoid allocations in per-frame loops.\n * \n * @param baseSpeed - Base movement speed (m/s)\n * @param bodyPartHealth - Current body part health\n * @param stance - Current trigram stance\n * @param painLevel - Current pain level (0-100)\n * @returns Final calculated speed in m/s\n * \n * @example\n * ```typescript\n * const finalSpeed = calculateMovementSpeed(\n * 5.0,\n * playerBodyHealth,\n * TrigramStance.GEON,\n * 65\n * );\n * \n * // Use this speed to override MovementPhysics\n * movementPhysics.setMaxSpeed(finalSpeed);\n * ```\n * \n * @public\n * @korean 종합이동속도계산\n */\nexport function calculateMovementSpeed(\n baseSpeed: number,\n bodyPartHealth: BodyPartHealth,\n stance: TrigramStance,\n painLevel: number\n): number {\n const result = injuryMovementModifier.calculateMovementSpeed(\n baseSpeed,\n bodyPartHealth,\n stance,\n painLevel\n );\n \n return result.finalSpeed;\n}\n\n/**\n * Calculate speed multiplier from injuries (without stance or pain).\n * \n * **Korean**: 손상 속도 배수 계산\n * \n * Useful when you want to apply injury penalties separately from\n * stance and pain modifiers.\n * \n * Uses the shared singleton instance to avoid allocations in per-frame loops.\n * \n * @param bodyPartHealth - Current body part health\n * @returns Speed multiplier (0.1-1.0)\n * \n * @public\n * @korean 손상속도배수계산\n */\nexport function calculateInjuryMultiplier(\n bodyPartHealth: BodyPartHealth\n): number {\n // Calculate without stance or pain modifiers\n const result = injuryMovementModifier.calculateMovementSpeed(\n 1.0, // Base speed of 1.0 to get pure multiplier\n bodyPartHealth,\n TrigramStance.GEON, // Neutral stance (1.0x)\n 0 // No pain\n );\n \n // The result will be the pure injury multiplier\n return result.speedMultiplier;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyCA,SAAgB,yBACd,gBACQ;CAGR,MAAM,iBAAiB,KAAK,IAAI,eAAe,SAAS,eAAe,SAAS;CAUhF,MAAM,eAAe,IAPI,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,eAAe,CAG9C,GAAmB;CAKvC,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoC/C,SAAgB,uBACd,WACA,gBACA,QACA,WACQ;CAQR,OAPe,uBAAuB,uBACpC,WACA,gBACA,QACA,UAGK,CAAO;;;;;;;;;;;;;;;;;;AAmBhB,SAAgB,0BACd,gBACQ;CAUR,OARe,uBAAuB,uBACpC,GACA,gBACA,cAAc,MACd,EAIK,CAAO"}
1
+ {"version":3,"file":"integration.js","names":[],"sources":["../../../src/systems/movement/integration.ts"],"sourcesContent":["/**\n * Integration module for InjuryMovementModifier with MovementPhysics\n * \n * **Korean**: 손상 이동 통합 (Injury Movement Integration)\n * \n * Provides helper functions to integrate the InjuryMovementModifier system\n * with the existing MovementPhysics system.\n * \n * @module systems/movement/integration\n * @category Movement System\n * @korean 손상이동통합\n */\n\nimport { injuryMovementModifier } from \"./InjuryMovementModifier\";\nimport type { BodyPartHealth } from \"../bodypart/types\";\nimport { TrigramStance } from \"@/types/common\";\n\n/**\n * Calculate leg injury factor for MovementPhysics from body part health.\n * \n * **Korean**: 다리 손상 요소 계산\n * \n * Converts detailed body part health into a simple 0-1 injury factor\n * that MovementPhysics.MovementState expects. This allows gradual\n * migration from the old simple system to the new detailed system.\n * \n * Uses the **worst** (minimum) leg health to match the main injury system's behavior,\n * ensuring asymmetric injuries (e.g., one leg at 0%, other at 100%) are properly represented.\n * \n * @param bodyPartHealth - Current body part health\n * @returns Leg injury factor (0 = healthy, 1 = fully injured), clamped to 0-1 range\n * \n * @example\n * ```typescript\n * const legInjuryFactor = calculateLegInjuryFactor(bodyPartHealth);\n * movementState.legInjuryFactor = legInjuryFactor;\n * ```\n * \n * @korean 다리손상요소계산\n */\nexport function calculateLegInjuryFactor(\n bodyPartHealth: BodyPartHealth\n): number {\n // Use worst (minimum) leg health to match main injury system behavior\n // This ensures asymmetric injuries are properly represented\n const worstLegHealth = Math.min(bodyPartHealth.legLeft, bodyPartHealth.legRight);\n \n // Clamp worst leg health to valid 0-100 range to avoid invalid injury factors\n const clampedLegHealth = Math.min(100, Math.max(0, worstLegHealth));\n\n // Normalize to 0-1 health ratio (1 = fully healthy, 0 = no health)\n const healthRatio = clampedLegHealth / 100;\n\n // Convert to 0-1 injury factor (0 = healthy, 1 = fully injured)\n // Use inverse of health ratio and clamp defensively to 0-1\n const injuryFactor = 1.0 - healthRatio;\n return Math.min(1, Math.max(0, injuryFactor));\n}\n\n/**\n * Calculate comprehensive movement speed with all injury modifiers.\n * \n * **Korean**: 종합 이동 속도 계산\n * \n * This is the recommended function for full integration with the new\n * injury system. It applies all modifiers including leg injuries,\n * torso damage, stance bonuses, and pain penalties.\n * \n * Uses the shared singleton instance to avoid allocations in per-frame loops.\n * \n * @param baseSpeed - Base movement speed (m/s)\n * @param bodyPartHealth - Current body part health\n * @param stance - Current trigram stance\n * @param painLevel - Current pain level (0-100)\n * @returns Final calculated speed in m/s\n * \n * @example\n * ```typescript\n * const finalSpeed = calculateMovementSpeed(\n * 5.0,\n * playerBodyHealth,\n * TrigramStance.GEON,\n * 65\n * );\n * \n * // Use this speed to override MovementPhysics\n * movementPhysics.setMaxSpeed(finalSpeed);\n * ```\n * \n * @korean 종합이동속도계산\n */\nexport function calculateMovementSpeed(\n baseSpeed: number,\n bodyPartHealth: BodyPartHealth,\n stance: TrigramStance,\n painLevel: number\n): number {\n const result = injuryMovementModifier.calculateMovementSpeed(\n baseSpeed,\n bodyPartHealth,\n stance,\n painLevel\n );\n \n return result.finalSpeed;\n}\n\n/**\n * Calculate speed multiplier from injuries (without stance or pain).\n * \n * **Korean**: 손상 속도 배수 계산\n * \n * Useful when you want to apply injury penalties separately from\n * stance and pain modifiers.\n * \n * Uses the shared singleton instance to avoid allocations in per-frame loops.\n * \n * @param bodyPartHealth - Current body part health\n * @returns Speed multiplier (0.1-1.0)\n * \n * @korean 손상속도배수계산\n */\nexport function calculateInjuryMultiplier(\n bodyPartHealth: BodyPartHealth\n): number {\n // Calculate without stance or pain modifiers\n const result = injuryMovementModifier.calculateMovementSpeed(\n 1.0, // Base speed of 1.0 to get pure multiplier\n bodyPartHealth,\n TrigramStance.GEON, // Neutral stance (1.0x)\n 0 // No pain\n );\n \n // The result will be the pure injury multiplier\n return result.speedMultiplier;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwCA,SAAgB,yBACd,gBACQ;CAGR,MAAM,iBAAiB,KAAK,IAAI,eAAe,SAAS,eAAe,SAAS;CAUhF,MAAM,eAAe,IAPI,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,eAAe,CAG9C,GAAmB;CAKvC,OAAO,KAAK,IAAI,GAAG,KAAK,IAAI,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmC/C,SAAgB,uBACd,WACA,gBACA,QACA,WACQ;CAQR,OAPe,uBAAuB,uBACpC,WACA,gBACA,QACA,UAGK,CAAO;;;;;;;;;;;;;;;;;AAkBhB,SAAgB,0BACd,gBACQ;CAUR,OARe,uBAAuB,uBACpC,GACA,gBACA,cAAc,MACd,EAIK,CAAO"}
@@ -38,7 +38,6 @@ import { AnimationType } from "../animation";
38
38
  *
39
39
  * **Korean**: 공격 이동 설정 (Attack Movement Configuration)
40
40
  *
41
- * @public
42
41
  * @korean 공격이동설정
43
42
  */
44
43
  export interface AttackMovementConfig {
@@ -58,7 +57,6 @@ export interface AttackMovementConfig {
58
57
  *
59
58
  * Contains displacement vector and timing for attack lunge.
60
59
  *
61
- * @public
62
60
  * @korean 공격이동결과
63
61
  */
64
62
  export interface AttackMovementResult {
@@ -98,7 +96,6 @@ export interface AttackMovementResult {
98
96
  * // recoveryDuration: 0.24s (50% of animation)
99
97
  * ```
100
98
  *
101
- * @public
102
99
  * @korean 공격이동물리
103
100
  */
104
101
  export declare class AttackMovementPhysics {
@@ -136,7 +133,6 @@ export declare class AttackMovementPhysics {
136
133
  * // Result: ~0.24m forward (0.3m * 0.8 Gan modifier)
137
134
  * ```
138
135
  *
139
- * @public
140
136
  * @korean 공격이동계산
141
137
  */
142
138
  calculateAttackMovement(config: AttackMovementConfig): AttackMovementResult;
@@ -220,7 +216,6 @@ export declare class AttackMovementPhysics {
220
216
  * }
221
217
  * ```
222
218
  *
223
- * @public
224
219
  * @korean 공격이동적용
225
220
  */
226
221
  applyAttackMovement(basePosition: THREE.Vector3, result: AttackMovementResult, elapsedTime: number, isRecoveryPhase: boolean): THREE.Vector3;
@@ -233,7 +228,6 @@ export declare class AttackMovementPhysics {
233
228
  * @param lungeDuration - Total lunge phase duration
234
229
  * @returns True if in forward lunge phase
235
230
  *
236
- * @public
237
231
  * @korean 돌진상태확인
238
232
  */
239
233
  isInLungePhase(elapsedTime: number, lungeDuration: number): boolean;
@@ -246,7 +240,6 @@ export declare class AttackMovementPhysics {
246
240
  * @param result - Attack movement result with timing
247
241
  * @returns True if in recovery return phase
248
242
  *
249
- * @public
250
243
  * @korean 회복상태확인
251
244
  */
252
245
  isInRecoveryPhase(elapsedTime: number, result: AttackMovementResult): boolean;
@@ -257,7 +250,6 @@ export declare class AttackMovementPhysics {
257
250
  *
258
251
  * @returns Korean and English phase names
259
252
  *
260
- * @public
261
253
  * @korean 돌진단계이름
262
254
  */
263
255
  getLungePhaseName(): {
@@ -271,7 +263,6 @@ export declare class AttackMovementPhysics {
271
263
  *
272
264
  * @returns Korean and English phase names
273
265
  *
274
- * @public
275
266
  * @korean 복귀단계이름
276
267
  */
277
268
  getRecoveryPhaseName(): {
@@ -1 +1 @@
1
- {"version":3,"file":"AttackMovementPhysics.d.ts","sourceRoot":"","sources":["../../../src/systems/physics/AttackMovementPhysics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;;GAOG;AACH,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,6BAA6B;IAC7B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;IAClC,iDAAiD;IACjD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;IACrC,iDAAiD;IACjD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,qBAAa,qBAAqB;IAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAoCG;IACH,uBAAuB,CACrB,MAAM,EAAE,oBAAoB,GAC3B,oBAAoB;IAuBvB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,uBAAuB;IAqJ/B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,mBAAmB,CACjB,YAAY,EAAE,KAAK,CAAC,OAAO,EAC3B,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,OAAO,GACvB,KAAK,CAAC,OAAO;IAmChB;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;IAInE;;;;;;;;;;;OAWG;IACH,iBAAiB,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,oBAAoB,GAC3B,OAAO;IAOV;;;;;;;;;OASG;IACH,iBAAiB,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOxD;;;;;;;;;OASG;IACH,oBAAoB,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAM5D;AAED,eAAe,qBAAqB,CAAC"}
1
+ {"version":3,"file":"AttackMovementPhysics.d.ts","sourceRoot":"","sources":["../../../src/systems/physics/AttackMovementPhysics.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AAEH,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,WAAW,oBAAoB;IACnC,oCAAoC;IACpC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,6BAA6B;IAC7B,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IACtC,6DAA6D;IAC7D,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,OAAO,CAAC;IAClC,iDAAiD;IACjD,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;CACpC;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,uDAAuD;IACvD,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,OAAO,CAAC;IACrC,iDAAiD;IACjD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,+CAA+C;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,qBAAa,qBAAqB;IAChC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,uBAAuB,CACrB,MAAM,EAAE,oBAAoB,GAC3B,oBAAoB;IAuBvB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,uBAAuB;IAqJ/B;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,yBAAyB;IAcjC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyCG;IACH,mBAAmB,CACjB,YAAY,EAAE,KAAK,CAAC,OAAO,EAC3B,MAAM,EAAE,oBAAoB,EAC5B,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,OAAO,GACvB,KAAK,CAAC,OAAO;IAmChB;;;;;;;;;;OAUG;IACH,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;IAInE;;;;;;;;;;OAUG;IACH,iBAAiB,CACf,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,oBAAoB,GAC3B,OAAO;IAOV;;;;;;;;OAQG;IACH,iBAAiB,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;IAOxD;;;;;;;;OAQG;IACH,oBAAoB,IAAI;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE;CAM5D;AAED,eAAe,qBAAqB,CAAC"}
@@ -28,7 +28,6 @@ import { AnimationType } from "../animation/builders/MartialArtsConstants.js";
28
28
  * // recoveryDuration: 0.24s (50% of animation)
29
29
  * ```
30
30
  *
31
- * @public
32
31
  * @korean 공격이동물리
33
32
  */
34
33
  var AttackMovementPhysics = class {
@@ -66,7 +65,6 @@ var AttackMovementPhysics = class {
66
65
  * // Result: ~0.24m forward (0.3m * 0.8 Gan modifier)
67
66
  * ```
68
67
  *
69
- * @public
70
68
  * @korean 공격이동계산
71
69
  */
72
70
  calculateAttackMovement(config) {
@@ -184,7 +182,6 @@ var AttackMovementPhysics = class {
184
182
  * }
185
183
  * ```
186
184
  *
187
- * @public
188
185
  * @korean 공격이동적용
189
186
  */
190
187
  applyAttackMovement(basePosition, result, elapsedTime, isRecoveryPhase) {
@@ -211,7 +208,6 @@ var AttackMovementPhysics = class {
211
208
  * @param lungeDuration - Total lunge phase duration
212
209
  * @returns True if in forward lunge phase
213
210
  *
214
- * @public
215
211
  * @korean 돌진상태확인
216
212
  */
217
213
  isInLungePhase(elapsedTime, lungeDuration) {
@@ -226,7 +222,6 @@ var AttackMovementPhysics = class {
226
222
  * @param result - Attack movement result with timing
227
223
  * @returns True if in recovery return phase
228
224
  *
229
- * @public
230
225
  * @korean 회복상태확인
231
226
  */
232
227
  isInRecoveryPhase(elapsedTime, result) {
@@ -239,7 +234,6 @@ var AttackMovementPhysics = class {
239
234
  *
240
235
  * @returns Korean and English phase names
241
236
  *
242
- * @public
243
237
  * @korean 돌진단계이름
244
238
  */
245
239
  getLungePhaseName() {
@@ -255,7 +249,6 @@ var AttackMovementPhysics = class {
255
249
  *
256
250
  * @returns Korean and English phase names
257
251
  *
258
- * @public
259
252
  * @korean 복귀단계이름
260
253
  */
261
254
  getRecoveryPhaseName() {
@@ -1 +1 @@
1
- {"version":3,"file":"AttackMovementPhysics.js","names":[],"sources":["../../../src/systems/physics/AttackMovementPhysics.ts"],"sourcesContent":["/**\n * Attack Movement Physics System for realistic forward momentum during attacks.\n *\n * **Korean**: 공격 이동 물리 시스템 (Attack Movement Physics System)\n *\n * Implements realistic forward movement physics when fighters execute attacks.\n * Kicks naturally extend the body forward, punches lunge with body weight,\n * and spinning techniques carry rotational momentum.\n *\n * ## Attack Movement Mechanics\n *\n * Forward movement distance is determined by:\n * - Animation type (kicks > punches > elbows/knees)\n * - Stance modifiers (8 trigram stances affect aggression)\n * - Animation phase timing (extension → peak → recovery)\n *\n * ## Movement Integration\n *\n * - Extension phase (frames 3-6): Forward lunge with ease-out\n * - Peak phase (frame 6): Maximum extension reached\n * - Recovery phase (frames 7-10): Return to original stance\n * - Arena bounds: Automatically clamp movement to valid zone\n *\n * ## Performance\n *\n * Optimized for 60fps with efficient vector calculations and\n * smooth easing curves for realistic attack momentum feel.\n *\n * @module systems/physics/AttackMovementPhysics\n * @category Physics System\n * @korean 공격이동물리\n */\n\nimport * as THREE from \"three\";\nimport { TrigramStance } from \"@/types/common\";\nimport { AnimationType } from \"@/systems/animation\";\n\n/**\n * Configuration for attack movement calculation.\n *\n * **Korean**: 공격 이동 설정 (Attack Movement Configuration)\n *\n * @public\n * @korean 공격이동설정\n */\nexport interface AttackMovementConfig {\n /** Animation type being executed */\n readonly animationType: AnimationType;\n /** Current trigram stance */\n readonly currentStance: TrigramStance;\n /** Normalized attack direction vector (attacker → target) */\n readonly direction: THREE.Vector3;\n /** Total attack animation duration in seconds */\n readonly animationDuration: number;\n}\n\n/**\n * Result of attack movement calculation.\n *\n * **Korean**: 공격 이동 결과 (Attack Movement Result)\n *\n * Contains displacement vector and timing for attack lunge.\n *\n * @public\n * @korean 공격이동결과\n */\nexport interface AttackMovementResult {\n /** Total forward displacement vector in world space */\n readonly displacement: THREE.Vector3;\n /** Duration of forward lunge phase in seconds */\n readonly lungeDuration: number;\n /** Duration of recovery return phase in seconds */\n readonly recoveryDuration: number;\n /** Total movement cycle duration in seconds */\n readonly totalDuration: number;\n}\n\n/**\n * Attack Movement Physics Engine.\n *\n * **Korean**: 공격 이동 물리 엔진\n *\n * Calculates realistic forward movement during attack animations\n * based on technique type, stance modifiers, and animation timing.\n * Provides smooth lunge and recovery phases for authentic martial arts feel.\n *\n * @example\n * ```typescript\n * const physics = new AttackMovementPhysics();\n *\n * // Calculate movement for roundhouse kick\n * const config: AttackMovementConfig = {\n * animationType: AnimationType.ROUNDHOUSE_KICK,\n * currentStance: TrigramStance.LI, // Fire stance (aggressive)\n * direction: new THREE.Vector3(1, 0, 0).normalize(),\n * animationDuration: 0.48, // 480ms kick animation\n * };\n *\n * const result = physics.calculateAttackMovement(config);\n * // Result: 1.0m base * 1.3 (Fire bonus) = ~1.3m forward lunge\n * // lungeDuration: 0.24s (50% of animation)\n * // recoveryDuration: 0.24s (50% of animation)\n * ```\n *\n * @public\n * @korean 공격이동물리\n */\nexport class AttackMovementPhysics {\n /**\n * Calculates attack movement displacement and timing.\n *\n * **Korean**: 공격 이동 계산 (Calculate Attack Movement)\n *\n * Determines forward lunge distance and recovery timing based on:\n * 1. Base movement from animation type\n * 2. Stance movement modifier (8 trigram effects)\n * 3. Animation phase durations (lunge vs recovery)\n *\n * @param config - Attack movement configuration\n * @returns Attack movement result with displacement and timing\n *\n * @example\n * ```typescript\n * // Front kick with Heaven stance\n * const kick = physics.calculateAttackMovement({\n * animationType: AnimationType.FRONT_KICK,\n * currentStance: TrigramStance.GEON,\n * direction: attackVector,\n * animationDuration: 0.4,\n * });\n * // Result: ~0.88m forward (0.8m * 1.1 Geon modifier)\n *\n * // Jab with Mountain stance\n * const jab = physics.calculateAttackMovement({\n * animationType: AnimationType.JAB,\n * currentStance: TrigramStance.GAN,\n * direction: attackVector,\n * animationDuration: 0.25,\n * });\n * // Result: ~0.24m forward (0.3m * 0.8 Gan modifier)\n * ```\n *\n * @public\n * @korean 공격이동계산\n */\n calculateAttackMovement(\n config: AttackMovementConfig\n ): AttackMovementResult {\n // 1. Get base movement distance for animation type\n const baseDistance = this.getBaseMovementDistance(config.animationType);\n\n // 2. Apply stance movement modifier\n const stanceModifier = this.getStanceMovementModifier(config.currentStance);\n const finalDistance = baseDistance * stanceModifier;\n\n // 3. Calculate displacement vector\n const displacement = config.direction.clone().multiplyScalar(finalDistance);\n\n // 4. Calculate phase durations (lunge + recovery)\n const lungeDuration = config.animationDuration * 0.5; // First 50% = forward\n const recoveryDuration = config.animationDuration * 0.5; // Last 50% = return\n\n return {\n displacement,\n lungeDuration,\n recoveryDuration,\n totalDuration: config.animationDuration,\n };\n }\n\n /**\n * Gets base forward movement distance for animation type.\n *\n * **Korean**: 기본 이동 거리 (Base Movement Distance)\n *\n * Movement distances by technique category:\n * - Kicks: 0.8-1.2m (leg extension, longest reach)\n * - Punches: 0.3-0.5m (arm extension, body lunge)\n * - Elbows/Knees: 0.2-0.3m (close range techniques)\n * - Spinning: 0.5-0.8m (rotation carries momentum)\n *\n * @param animationType - Type of attack animation\n * @returns Base movement distance in meters\n *\n * @private\n * @korean 기본이동거리\n */\n private getBaseMovementDistance(animationType: AnimationType): number {\n // Kicks - highest forward movement (leg extension)\n if (\n animationType === AnimationType.ROUNDHOUSE_KICK ||\n animationType === AnimationType.SIDE_KICK ||\n animationType === AnimationType.BACK_KICK\n ) {\n return 1.0; // 1.0m forward lunge\n }\n\n if (\n animationType === AnimationType.FRONT_KICK ||\n animationType === AnimationType.PUSH_KICK\n ) {\n return 0.8; // 0.8m forward lunge\n }\n\n if (\n animationType === AnimationType.AXE_KICK ||\n animationType === AnimationType.CRESCENT_KICK ||\n animationType === AnimationType.LOW_KICK\n ) {\n return 0.9; // 0.9m forward lunge\n }\n\n // Spinning kicks - momentum carries body forward\n if (\n animationType === AnimationType.SPINNING_HOOK ||\n animationType === AnimationType.SPINNING_HEEL_KICK ||\n animationType === AnimationType.TORNADO_KICK\n ) {\n return 0.8; // 0.8m with rotation\n }\n\n // Jumping/flying kicks - aerial momentum\n if (\n animationType === AnimationType.FLYING_KICK ||\n animationType === AnimationType.JUMPING_KICK\n ) {\n return 1.2; // 1.2m maximum extension\n }\n\n // Punches - moderate forward movement (arm + body lunge)\n if (\n animationType === AnimationType.CROSS ||\n animationType === AnimationType.OVERHAND ||\n animationType === AnimationType.HOOK\n ) {\n return 0.5; // 0.5m forward lunge\n }\n\n if (\n animationType === AnimationType.JAB ||\n animationType === AnimationType.BACKFIST\n ) {\n return 0.3; // 0.3m forward lunge\n }\n\n if (\n animationType === AnimationType.UPPERCUT ||\n animationType === AnimationType.HAMMER_FIST ||\n animationType === AnimationType.PALM_STRIKE\n ) {\n return 0.4; // 0.4m forward lunge\n }\n\n // Elbow/Knee - minimal movement (close range)\n if (\n animationType === AnimationType.ELBOW_STRIKE ||\n animationType === AnimationType.KNEE_STRIKE ||\n animationType === AnimationType.KNEE_KICK ||\n animationType === AnimationType.ELBOW_UPPERCUT ||\n animationType === AnimationType.FLYING_KNEE ||\n animationType === AnimationType.CLINCH_KNEE ||\n animationType === AnimationType.SPINNING_ELBOW ||\n animationType === AnimationType.TEMPLE_ELBOW ||\n animationType === AnimationType.SPINNING_BACK_ELBOW ||\n animationType === AnimationType.SPINAL_ELBOW ||\n animationType === AnimationType.BRACHIAL_ELBOW ||\n animationType === AnimationType.KIDNEY_KNEE ||\n animationType === AnimationType.FEMORAL_KNEE\n ) {\n return 0.2; // 0.2m forward lunge\n }\n\n // Specialized jab variants - similar to jab (quick extension)\n if (\n animationType === AnimationType.SPEAR_HAND_STRIKE ||\n animationType === AnimationType.NERVE_STRIKE ||\n animationType === AnimationType.PRESSURE_POINT_STRIKE ||\n animationType === AnimationType.LIGHTNING_STRIKE ||\n animationType === AnimationType.RAPID_BARRAGE ||\n animationType === AnimationType.RHYTHMIC_STRIKES ||\n animationType === AnimationType.NERVE_PARALYSIS ||\n animationType === AnimationType.THROAT_STRIKE ||\n animationType === AnimationType.EYE_GOUGE\n ) {\n return 0.3; // 0.3m forward lunge (jab-like)\n }\n\n // Specialized cross variants - similar to cross (body weight transfer)\n if (\n animationType === AnimationType.HEAVEN_STRIKE ||\n animationType === AnimationType.FLOWING_CROSS\n ) {\n return 0.5; // 0.5m forward lunge (cross-like)\n }\n\n // Specialized palm strikes - similar to palm strike\n if (\n animationType === AnimationType.SOLAR_PLEXUS_STRIKE ||\n animationType === AnimationType.FLOWING_PUSH ||\n animationType === AnimationType.LIVER_DISRUPTION ||\n animationType === AnimationType.EAR_STRIKE\n ) {\n return 0.4; // 0.4m forward lunge (palm-like)\n }\n\n // Grappling - minimal forward movement (rotation/off-balancing in place)\n if (\n animationType === AnimationType.THROW ||\n animationType === AnimationType.JOINT_LOCK ||\n animationType === AnimationType.TAKEDOWN ||\n animationType === AnimationType.SWEEP ||\n animationType === AnimationType.CLINCH ||\n animationType === AnimationType.GRAPPLE ||\n animationType === AnimationType.SLAM ||\n animationType === AnimationType.WRIST_LOCK ||\n animationType === AnimationType.ARM_BAR ||\n animationType === AnimationType.SHOULDER_LOCK ||\n animationType === AnimationType.HIP_THROW ||\n animationType === AnimationType.LEG_REAP ||\n animationType === AnimationType.SMALL_CIRCLE_LOCK ||\n animationType === AnimationType.FINGER_LOCK ||\n animationType === AnimationType.ELBOW_LOCK ||\n animationType === AnimationType.SHOULDER_MANIPULATION ||\n animationType === AnimationType.MOUNTAIN_LOCK ||\n animationType === AnimationType.EARTH_EMBRACE ||\n animationType === AnimationType.CAROTID_CHOKE\n ) {\n return 0.05; // 0.05m forward movement for grappling entries\n }\n\n // Default - conservative minimal movement for any unmapped types\n // Additional AnimationType values can be grouped with the closest category above\n // to fine-tune their forward displacement without changing overall behavior\n return 0.2;\n }\n\n /**\n * Gets stance movement modifier for attack lunge.\n *\n * **Korean**: 자세 이동 배율 (Stance Movement Modifier)\n *\n * Trigram stance movement modifiers based on combat philosophy:\n * - ☰ 건 (Geon/Heaven): +30% movement (aggressive, drives forward with pure yang)\n * - ☳ 진 (Jin/Thunder): +20% movement (explosive power, shocking force)\n * - ☴ 손 (Son/Wind): +15% movement (continuous flow, mobile)\n * - ☲ 리 (Li/Fire): +10% movement (precision strikes, controlled aggression)\n * - ☱ 태 (Tae/Lake): 0% (neutral, fluid and adaptive)\n * - ☵ 감 (Gam/Water): 0% (neutral, flowing and flexible)\n * - ☷ 곤 (Gon/Earth): -10% movement (grounded, stable techniques)\n * - ☶ 간 (Gan/Mountain): -20% movement (defensive mastery, minimal advance)\n *\n * @param stance - Current trigram stance\n * @returns Movement multiplier (0.8 to 1.3)\n *\n * @private\n * @korean 자세이동배율\n */\n private getStanceMovementModifier(stance: TrigramStance): number {\n const modifiers: Record<TrigramStance, number> = {\n [TrigramStance.GEON]: 1.3, // Heaven: +30% aggressive forward pressure (pure yang drives forward)\n [TrigramStance.JIN]: 1.2, // Thunder: +20% explosive movement\n [TrigramStance.SON]: 1.15, // Wind: +15% flowing movement\n [TrigramStance.LI]: 1.1, // Fire: +10% precision strikes with controlled forward movement\n [TrigramStance.TAE]: 1.0, // Lake: neutral movement\n [TrigramStance.GAM]: 1.0, // Water: neutral movement\n [TrigramStance.GON]: 0.9, // Earth: -10% grounded movement\n [TrigramStance.GAN]: 0.8, // Mountain: -20% defensive movement\n };\n return modifiers[stance];\n }\n\n /**\n * Applies attack movement force to attacker position over time.\n *\n * **Korean**: 공격 이동 적용 (Apply Attack Movement)\n *\n * Uses smooth ease-out cubic curve for realistic lunge feel:\n * - Fast initial forward movement (attack commitment)\n * - Gradual deceleration at peak extension\n * - Smooth return during recovery phase\n *\n * @param basePosition - Original stance position (does not change during attack)\n * @param result - Attack movement result with displacement\n * @param elapsedTime - Time elapsed since attack started\n * @param isRecoveryPhase - Whether in recovery (return) phase\n * @returns New position with attack displacement applied\n *\n * @example\n * ```typescript\n * // In animation update loop (60fps)\n * const basePos = new THREE.Vector3(0, 0, 0); // Original stance position\n * \n * if (elapsedTime < result.lungeDuration) {\n * // Lunge forward phase\n * const newPosition = physics.applyAttackMovement(\n * basePos,\n * result,\n * elapsedTime,\n * false\n * );\n * } else if (elapsedTime < result.totalDuration) {\n * // Recovery return phase\n * const newPosition = physics.applyAttackMovement(\n * basePos,\n * result,\n * elapsedTime,\n * true\n * );\n * }\n * ```\n *\n * @public\n * @korean 공격이동적용\n */\n applyAttackMovement(\n basePosition: THREE.Vector3,\n result: AttackMovementResult,\n elapsedTime: number,\n isRecoveryPhase: boolean\n ): THREE.Vector3 {\n let progress: number;\n\n if (!isRecoveryPhase) {\n // Lunge forward phase\n progress = Math.min(1.0, elapsedTime / result.lungeDuration);\n\n // Smooth forward lunge curve (ease-out cubic)\n // Fast initial commitment, gradual deceleration at peak\n const easedProgress = 1 - Math.pow(1 - progress, 3);\n\n // Calculate position along forward path\n const currentDisplacement = result.displacement\n .clone()\n .multiplyScalar(easedProgress);\n\n return basePosition.clone().add(currentDisplacement);\n } else {\n // Recovery return phase\n const recoveryTime = elapsedTime - result.lungeDuration;\n progress = Math.min(1.0, recoveryTime / result.recoveryDuration);\n\n // Smooth return curve (ease-in cubic)\n // Gradual start, faster finish back to stance\n const easedProgress = Math.pow(progress, 3);\n\n // Calculate return position (from peak back to origin)\n const returnDisplacement = result.displacement\n .clone()\n .multiplyScalar(1.0 - easedProgress);\n\n return basePosition.clone().add(returnDisplacement);\n }\n }\n\n /**\n * Checks if attacker is currently in lunge phase.\n *\n * **Korean**: 돌진 상태 확인 (Check Lunge State)\n *\n * @param elapsedTime - Time elapsed since attack started\n * @param lungeDuration - Total lunge phase duration\n * @returns True if in forward lunge phase\n *\n * @public\n * @korean 돌진상태확인\n */\n isInLungePhase(elapsedTime: number, lungeDuration: number): boolean {\n return elapsedTime < lungeDuration;\n }\n\n /**\n * Checks if attacker is in recovery return phase.\n *\n * **Korean**: 회복 상태 확인 (Check Recovery State)\n *\n * @param elapsedTime - Time elapsed since attack started\n * @param result - Attack movement result with timing\n * @returns True if in recovery return phase\n *\n * @public\n * @korean 회복상태확인\n */\n isInRecoveryPhase(\n elapsedTime: number,\n result: AttackMovementResult\n ): boolean {\n return (\n elapsedTime >= result.lungeDuration &&\n elapsedTime < result.totalDuration\n );\n }\n\n /**\n * Gets bilingual Korean-English name for lunge phase.\n *\n * **Korean**: 돌진 단계 이름 (Lunge Phase Name)\n *\n * @returns Korean and English phase names\n *\n * @public\n * @korean 돌진단계이름\n */\n getLungePhaseName(): { korean: string; english: string } {\n return {\n korean: \"돌진\",\n english: \"Lunge\",\n };\n }\n\n /**\n * Gets bilingual Korean-English name for recovery phase.\n *\n * **Korean**: 복귀 단계 이름 (Recovery Phase Name)\n *\n * @returns Korean and English phase names\n *\n * @public\n * @korean 복귀단계이름\n */\n getRecoveryPhaseName(): { korean: string; english: string } {\n return {\n korean: \"복귀\",\n english: \"Recovery\",\n };\n }\n}\n\nexport default AttackMovementPhysics;\n"],"mappings":"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"}
1
+ {"version":3,"file":"AttackMovementPhysics.js","names":[],"sources":["../../../src/systems/physics/AttackMovementPhysics.ts"],"sourcesContent":["/**\n * Attack Movement Physics System for realistic forward momentum during attacks.\n *\n * **Korean**: 공격 이동 물리 시스템 (Attack Movement Physics System)\n *\n * Implements realistic forward movement physics when fighters execute attacks.\n * Kicks naturally extend the body forward, punches lunge with body weight,\n * and spinning techniques carry rotational momentum.\n *\n * ## Attack Movement Mechanics\n *\n * Forward movement distance is determined by:\n * - Animation type (kicks > punches > elbows/knees)\n * - Stance modifiers (8 trigram stances affect aggression)\n * - Animation phase timing (extension → peak → recovery)\n *\n * ## Movement Integration\n *\n * - Extension phase (frames 3-6): Forward lunge with ease-out\n * - Peak phase (frame 6): Maximum extension reached\n * - Recovery phase (frames 7-10): Return to original stance\n * - Arena bounds: Automatically clamp movement to valid zone\n *\n * ## Performance\n *\n * Optimized for 60fps with efficient vector calculations and\n * smooth easing curves for realistic attack momentum feel.\n *\n * @module systems/physics/AttackMovementPhysics\n * @category Physics System\n * @korean 공격이동물리\n */\n\nimport * as THREE from \"three\";\nimport { TrigramStance } from \"@/types/common\";\nimport { AnimationType } from \"@/systems/animation\";\n\n/**\n * Configuration for attack movement calculation.\n *\n * **Korean**: 공격 이동 설정 (Attack Movement Configuration)\n *\n * @korean 공격이동설정\n */\nexport interface AttackMovementConfig {\n /** Animation type being executed */\n readonly animationType: AnimationType;\n /** Current trigram stance */\n readonly currentStance: TrigramStance;\n /** Normalized attack direction vector (attacker → target) */\n readonly direction: THREE.Vector3;\n /** Total attack animation duration in seconds */\n readonly animationDuration: number;\n}\n\n/**\n * Result of attack movement calculation.\n *\n * **Korean**: 공격 이동 결과 (Attack Movement Result)\n *\n * Contains displacement vector and timing for attack lunge.\n *\n * @korean 공격이동결과\n */\nexport interface AttackMovementResult {\n /** Total forward displacement vector in world space */\n readonly displacement: THREE.Vector3;\n /** Duration of forward lunge phase in seconds */\n readonly lungeDuration: number;\n /** Duration of recovery return phase in seconds */\n readonly recoveryDuration: number;\n /** Total movement cycle duration in seconds */\n readonly totalDuration: number;\n}\n\n/**\n * Attack Movement Physics Engine.\n *\n * **Korean**: 공격 이동 물리 엔진\n *\n * Calculates realistic forward movement during attack animations\n * based on technique type, stance modifiers, and animation timing.\n * Provides smooth lunge and recovery phases for authentic martial arts feel.\n *\n * @example\n * ```typescript\n * const physics = new AttackMovementPhysics();\n *\n * // Calculate movement for roundhouse kick\n * const config: AttackMovementConfig = {\n * animationType: AnimationType.ROUNDHOUSE_KICK,\n * currentStance: TrigramStance.LI, // Fire stance (aggressive)\n * direction: new THREE.Vector3(1, 0, 0).normalize(),\n * animationDuration: 0.48, // 480ms kick animation\n * };\n *\n * const result = physics.calculateAttackMovement(config);\n * // Result: 1.0m base * 1.3 (Fire bonus) = ~1.3m forward lunge\n * // lungeDuration: 0.24s (50% of animation)\n * // recoveryDuration: 0.24s (50% of animation)\n * ```\n *\n * @korean 공격이동물리\n */\nexport class AttackMovementPhysics {\n /**\n * Calculates attack movement displacement and timing.\n *\n * **Korean**: 공격 이동 계산 (Calculate Attack Movement)\n *\n * Determines forward lunge distance and recovery timing based on:\n * 1. Base movement from animation type\n * 2. Stance movement modifier (8 trigram effects)\n * 3. Animation phase durations (lunge vs recovery)\n *\n * @param config - Attack movement configuration\n * @returns Attack movement result with displacement and timing\n *\n * @example\n * ```typescript\n * // Front kick with Heaven stance\n * const kick = physics.calculateAttackMovement({\n * animationType: AnimationType.FRONT_KICK,\n * currentStance: TrigramStance.GEON,\n * direction: attackVector,\n * animationDuration: 0.4,\n * });\n * // Result: ~0.88m forward (0.8m * 1.1 Geon modifier)\n *\n * // Jab with Mountain stance\n * const jab = physics.calculateAttackMovement({\n * animationType: AnimationType.JAB,\n * currentStance: TrigramStance.GAN,\n * direction: attackVector,\n * animationDuration: 0.25,\n * });\n * // Result: ~0.24m forward (0.3m * 0.8 Gan modifier)\n * ```\n *\n * @korean 공격이동계산\n */\n calculateAttackMovement(\n config: AttackMovementConfig\n ): AttackMovementResult {\n // 1. Get base movement distance for animation type\n const baseDistance = this.getBaseMovementDistance(config.animationType);\n\n // 2. Apply stance movement modifier\n const stanceModifier = this.getStanceMovementModifier(config.currentStance);\n const finalDistance = baseDistance * stanceModifier;\n\n // 3. Calculate displacement vector\n const displacement = config.direction.clone().multiplyScalar(finalDistance);\n\n // 4. Calculate phase durations (lunge + recovery)\n const lungeDuration = config.animationDuration * 0.5; // First 50% = forward\n const recoveryDuration = config.animationDuration * 0.5; // Last 50% = return\n\n return {\n displacement,\n lungeDuration,\n recoveryDuration,\n totalDuration: config.animationDuration,\n };\n }\n\n /**\n * Gets base forward movement distance for animation type.\n *\n * **Korean**: 기본 이동 거리 (Base Movement Distance)\n *\n * Movement distances by technique category:\n * - Kicks: 0.8-1.2m (leg extension, longest reach)\n * - Punches: 0.3-0.5m (arm extension, body lunge)\n * - Elbows/Knees: 0.2-0.3m (close range techniques)\n * - Spinning: 0.5-0.8m (rotation carries momentum)\n *\n * @param animationType - Type of attack animation\n * @returns Base movement distance in meters\n *\n * @private\n * @korean 기본이동거리\n */\n private getBaseMovementDistance(animationType: AnimationType): number {\n // Kicks - highest forward movement (leg extension)\n if (\n animationType === AnimationType.ROUNDHOUSE_KICK ||\n animationType === AnimationType.SIDE_KICK ||\n animationType === AnimationType.BACK_KICK\n ) {\n return 1.0; // 1.0m forward lunge\n }\n\n if (\n animationType === AnimationType.FRONT_KICK ||\n animationType === AnimationType.PUSH_KICK\n ) {\n return 0.8; // 0.8m forward lunge\n }\n\n if (\n animationType === AnimationType.AXE_KICK ||\n animationType === AnimationType.CRESCENT_KICK ||\n animationType === AnimationType.LOW_KICK\n ) {\n return 0.9; // 0.9m forward lunge\n }\n\n // Spinning kicks - momentum carries body forward\n if (\n animationType === AnimationType.SPINNING_HOOK ||\n animationType === AnimationType.SPINNING_HEEL_KICK ||\n animationType === AnimationType.TORNADO_KICK\n ) {\n return 0.8; // 0.8m with rotation\n }\n\n // Jumping/flying kicks - aerial momentum\n if (\n animationType === AnimationType.FLYING_KICK ||\n animationType === AnimationType.JUMPING_KICK\n ) {\n return 1.2; // 1.2m maximum extension\n }\n\n // Punches - moderate forward movement (arm + body lunge)\n if (\n animationType === AnimationType.CROSS ||\n animationType === AnimationType.OVERHAND ||\n animationType === AnimationType.HOOK\n ) {\n return 0.5; // 0.5m forward lunge\n }\n\n if (\n animationType === AnimationType.JAB ||\n animationType === AnimationType.BACKFIST\n ) {\n return 0.3; // 0.3m forward lunge\n }\n\n if (\n animationType === AnimationType.UPPERCUT ||\n animationType === AnimationType.HAMMER_FIST ||\n animationType === AnimationType.PALM_STRIKE\n ) {\n return 0.4; // 0.4m forward lunge\n }\n\n // Elbow/Knee - minimal movement (close range)\n if (\n animationType === AnimationType.ELBOW_STRIKE ||\n animationType === AnimationType.KNEE_STRIKE ||\n animationType === AnimationType.KNEE_KICK ||\n animationType === AnimationType.ELBOW_UPPERCUT ||\n animationType === AnimationType.FLYING_KNEE ||\n animationType === AnimationType.CLINCH_KNEE ||\n animationType === AnimationType.SPINNING_ELBOW ||\n animationType === AnimationType.TEMPLE_ELBOW ||\n animationType === AnimationType.SPINNING_BACK_ELBOW ||\n animationType === AnimationType.SPINAL_ELBOW ||\n animationType === AnimationType.BRACHIAL_ELBOW ||\n animationType === AnimationType.KIDNEY_KNEE ||\n animationType === AnimationType.FEMORAL_KNEE\n ) {\n return 0.2; // 0.2m forward lunge\n }\n\n // Specialized jab variants - similar to jab (quick extension)\n if (\n animationType === AnimationType.SPEAR_HAND_STRIKE ||\n animationType === AnimationType.NERVE_STRIKE ||\n animationType === AnimationType.PRESSURE_POINT_STRIKE ||\n animationType === AnimationType.LIGHTNING_STRIKE ||\n animationType === AnimationType.RAPID_BARRAGE ||\n animationType === AnimationType.RHYTHMIC_STRIKES ||\n animationType === AnimationType.NERVE_PARALYSIS ||\n animationType === AnimationType.THROAT_STRIKE ||\n animationType === AnimationType.EYE_GOUGE\n ) {\n return 0.3; // 0.3m forward lunge (jab-like)\n }\n\n // Specialized cross variants - similar to cross (body weight transfer)\n if (\n animationType === AnimationType.HEAVEN_STRIKE ||\n animationType === AnimationType.FLOWING_CROSS\n ) {\n return 0.5; // 0.5m forward lunge (cross-like)\n }\n\n // Specialized palm strikes - similar to palm strike\n if (\n animationType === AnimationType.SOLAR_PLEXUS_STRIKE ||\n animationType === AnimationType.FLOWING_PUSH ||\n animationType === AnimationType.LIVER_DISRUPTION ||\n animationType === AnimationType.EAR_STRIKE\n ) {\n return 0.4; // 0.4m forward lunge (palm-like)\n }\n\n // Grappling - minimal forward movement (rotation/off-balancing in place)\n if (\n animationType === AnimationType.THROW ||\n animationType === AnimationType.JOINT_LOCK ||\n animationType === AnimationType.TAKEDOWN ||\n animationType === AnimationType.SWEEP ||\n animationType === AnimationType.CLINCH ||\n animationType === AnimationType.GRAPPLE ||\n animationType === AnimationType.SLAM ||\n animationType === AnimationType.WRIST_LOCK ||\n animationType === AnimationType.ARM_BAR ||\n animationType === AnimationType.SHOULDER_LOCK ||\n animationType === AnimationType.HIP_THROW ||\n animationType === AnimationType.LEG_REAP ||\n animationType === AnimationType.SMALL_CIRCLE_LOCK ||\n animationType === AnimationType.FINGER_LOCK ||\n animationType === AnimationType.ELBOW_LOCK ||\n animationType === AnimationType.SHOULDER_MANIPULATION ||\n animationType === AnimationType.MOUNTAIN_LOCK ||\n animationType === AnimationType.EARTH_EMBRACE ||\n animationType === AnimationType.CAROTID_CHOKE\n ) {\n return 0.05; // 0.05m forward movement for grappling entries\n }\n\n // Default - conservative minimal movement for any unmapped types\n // Additional AnimationType values can be grouped with the closest category above\n // to fine-tune their forward displacement without changing overall behavior\n return 0.2;\n }\n\n /**\n * Gets stance movement modifier for attack lunge.\n *\n * **Korean**: 자세 이동 배율 (Stance Movement Modifier)\n *\n * Trigram stance movement modifiers based on combat philosophy:\n * - ☰ 건 (Geon/Heaven): +30% movement (aggressive, drives forward with pure yang)\n * - ☳ 진 (Jin/Thunder): +20% movement (explosive power, shocking force)\n * - ☴ 손 (Son/Wind): +15% movement (continuous flow, mobile)\n * - ☲ 리 (Li/Fire): +10% movement (precision strikes, controlled aggression)\n * - ☱ 태 (Tae/Lake): 0% (neutral, fluid and adaptive)\n * - ☵ 감 (Gam/Water): 0% (neutral, flowing and flexible)\n * - ☷ 곤 (Gon/Earth): -10% movement (grounded, stable techniques)\n * - ☶ 간 (Gan/Mountain): -20% movement (defensive mastery, minimal advance)\n *\n * @param stance - Current trigram stance\n * @returns Movement multiplier (0.8 to 1.3)\n *\n * @private\n * @korean 자세이동배율\n */\n private getStanceMovementModifier(stance: TrigramStance): number {\n const modifiers: Record<TrigramStance, number> = {\n [TrigramStance.GEON]: 1.3, // Heaven: +30% aggressive forward pressure (pure yang drives forward)\n [TrigramStance.JIN]: 1.2, // Thunder: +20% explosive movement\n [TrigramStance.SON]: 1.15, // Wind: +15% flowing movement\n [TrigramStance.LI]: 1.1, // Fire: +10% precision strikes with controlled forward movement\n [TrigramStance.TAE]: 1.0, // Lake: neutral movement\n [TrigramStance.GAM]: 1.0, // Water: neutral movement\n [TrigramStance.GON]: 0.9, // Earth: -10% grounded movement\n [TrigramStance.GAN]: 0.8, // Mountain: -20% defensive movement\n };\n return modifiers[stance];\n }\n\n /**\n * Applies attack movement force to attacker position over time.\n *\n * **Korean**: 공격 이동 적용 (Apply Attack Movement)\n *\n * Uses smooth ease-out cubic curve for realistic lunge feel:\n * - Fast initial forward movement (attack commitment)\n * - Gradual deceleration at peak extension\n * - Smooth return during recovery phase\n *\n * @param basePosition - Original stance position (does not change during attack)\n * @param result - Attack movement result with displacement\n * @param elapsedTime - Time elapsed since attack started\n * @param isRecoveryPhase - Whether in recovery (return) phase\n * @returns New position with attack displacement applied\n *\n * @example\n * ```typescript\n * // In animation update loop (60fps)\n * const basePos = new THREE.Vector3(0, 0, 0); // Original stance position\n * \n * if (elapsedTime < result.lungeDuration) {\n * // Lunge forward phase\n * const newPosition = physics.applyAttackMovement(\n * basePos,\n * result,\n * elapsedTime,\n * false\n * );\n * } else if (elapsedTime < result.totalDuration) {\n * // Recovery return phase\n * const newPosition = physics.applyAttackMovement(\n * basePos,\n * result,\n * elapsedTime,\n * true\n * );\n * }\n * ```\n *\n * @korean 공격이동적용\n */\n applyAttackMovement(\n basePosition: THREE.Vector3,\n result: AttackMovementResult,\n elapsedTime: number,\n isRecoveryPhase: boolean\n ): THREE.Vector3 {\n let progress: number;\n\n if (!isRecoveryPhase) {\n // Lunge forward phase\n progress = Math.min(1.0, elapsedTime / result.lungeDuration);\n\n // Smooth forward lunge curve (ease-out cubic)\n // Fast initial commitment, gradual deceleration at peak\n const easedProgress = 1 - Math.pow(1 - progress, 3);\n\n // Calculate position along forward path\n const currentDisplacement = result.displacement\n .clone()\n .multiplyScalar(easedProgress);\n\n return basePosition.clone().add(currentDisplacement);\n } else {\n // Recovery return phase\n const recoveryTime = elapsedTime - result.lungeDuration;\n progress = Math.min(1.0, recoveryTime / result.recoveryDuration);\n\n // Smooth return curve (ease-in cubic)\n // Gradual start, faster finish back to stance\n const easedProgress = Math.pow(progress, 3);\n\n // Calculate return position (from peak back to origin)\n const returnDisplacement = result.displacement\n .clone()\n .multiplyScalar(1.0 - easedProgress);\n\n return basePosition.clone().add(returnDisplacement);\n }\n }\n\n /**\n * Checks if attacker is currently in lunge phase.\n *\n * **Korean**: 돌진 상태 확인 (Check Lunge State)\n *\n * @param elapsedTime - Time elapsed since attack started\n * @param lungeDuration - Total lunge phase duration\n * @returns True if in forward lunge phase\n *\n * @korean 돌진상태확인\n */\n isInLungePhase(elapsedTime: number, lungeDuration: number): boolean {\n return elapsedTime < lungeDuration;\n }\n\n /**\n * Checks if attacker is in recovery return phase.\n *\n * **Korean**: 회복 상태 확인 (Check Recovery State)\n *\n * @param elapsedTime - Time elapsed since attack started\n * @param result - Attack movement result with timing\n * @returns True if in recovery return phase\n *\n * @korean 회복상태확인\n */\n isInRecoveryPhase(\n elapsedTime: number,\n result: AttackMovementResult\n ): boolean {\n return (\n elapsedTime >= result.lungeDuration &&\n elapsedTime < result.totalDuration\n );\n }\n\n /**\n * Gets bilingual Korean-English name for lunge phase.\n *\n * **Korean**: 돌진 단계 이름 (Lunge Phase Name)\n *\n * @returns Korean and English phase names\n *\n * @korean 돌진단계이름\n */\n getLungePhaseName(): { korean: string; english: string } {\n return {\n korean: \"돌진\",\n english: \"Lunge\",\n };\n }\n\n /**\n * Gets bilingual Korean-English name for recovery phase.\n *\n * **Korean**: 복귀 단계 이름 (Recovery Phase Name)\n *\n * @returns Korean and English phase names\n *\n * @korean 복귀단계이름\n */\n getRecoveryPhaseName(): { korean: string; english: string } {\n return {\n korean: \"복귀\",\n english: \"Recovery\",\n };\n }\n}\n\nexport default AttackMovementPhysics;\n"],"mappings":"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"}
@@ -57,7 +57,6 @@ import type { VitalPoint } from "../vitalpoint/types";
57
57
  * Provides efficient collision detection for combat using bounding boxes and raycasting.
58
58
  * Optimized for 60fps performance with multiple simultaneous collision checks.
59
59
  *
60
- * @public
61
60
  * @category Combat Systems
62
61
  * @korean 충돌감지엔진
63
62
  */
@@ -82,7 +81,6 @@ export declare class CollisionDetection {
82
81
  * Disposes of cached geometries and releases memory to prevent leaks.
83
82
  * Should be called when the CollisionDetection instance is no longer needed.
84
83
  *
85
- * @public
86
84
  * @korean 자원정리
87
85
  */
88
86
  dispose(): void;
@@ -115,7 +113,6 @@ export declare class CollisionDetection {
115
113
  * );
116
114
  * ```
117
115
  *
118
- * @public
119
116
  * @korean 공격타격확인
120
117
  */
121
118
  checkAttackHit(attackerPosition: Position3D, defenderPosition: Position3D, technique: {
@@ -295,7 +292,6 @@ export declare class CollisionDetection {
295
292
  * @param region - Anatomical region
296
293
  * @returns Bounding box or undefined if not found
297
294
  *
298
- * @public
299
295
  * @korean 경계상자조회
300
296
  */
301
297
  getBoundingBox(region: AnatomicalRegionPhysics): BoundingBox | undefined;
@@ -304,7 +300,6 @@ export declare class CollisionDetection {
304
300
  *
305
301
  * @returns Map of all bounding boxes by region
306
302
  *
307
- * @public
308
303
  * @korean 모든경계상자조회
309
304
  */
310
305
  getAllBoundingBoxes(): ReadonlyMap<AnatomicalRegionPhysics, BoundingBox>;
@@ -314,7 +309,6 @@ export declare class CollisionDetection {
314
309
  * @param region - Anatomical region
315
310
  * @returns Array of vital points in that region
316
311
  *
317
- * @public
318
312
  * @korean 영역별급소조회
319
313
  */
320
314
  getVitalPointsInRegion(region: AnatomicalRegionPhysics): readonly VitalPoint[];
@@ -1 +1 @@
1
- {"version":3,"file":"CollisionDetection.d.ts","sourceRoot":"","sources":["../../../src/systems/physics/CollisionDetection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EACV,uBAAuB,EACvB,WAAW,EACX,eAAe,EACf,UAAU,EAGX,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD;;;;;;;;;;;GAWG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAClB;IACZ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,mBAAmB,CACf;IAGZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAG9E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IAEpD;;;;;OAKG;;IAQH;;;;;;;;;;OAUG;IACI,OAAO,IAAI,IAAI;IAQtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACH,cAAc,CACZ,gBAAgB,EAAE,UAAU,EAC5B,gBAAgB,EAAE,UAAU,EAE5B,SAAS,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAChD,cAAc,EAAE,aAAa,EAC7B,YAAY,EAAE,uBAAuB,GACpC,eAAe;IA4FlB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,kBAAkB;IAwD1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IA8D/B;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,2BAA2B;IAmDnC;;;;;;;;OAQG;IACH,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,GAAG,SAAS;IAIxE;;;;;;;OAOG;IACH,mBAAmB,IAAI,WAAW,CAAC,uBAAuB,EAAE,WAAW,CAAC;IAIxE;;;;;;;;OAQG;IACH,sBAAsB,CACpB,MAAM,EAAE,uBAAuB,GAC9B,SAAS,UAAU,EAAE;CAGzB;AAED,eAAe,kBAAkB,CAAC"}
1
+ {"version":3,"file":"CollisionDetection.d.ts","sourceRoot":"","sources":["../../../src/systems/physics/CollisionDetection.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AAGH,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,KAAK,EACV,uBAAuB,EACvB,WAAW,EACX,eAAe,EACf,UAAU,EAGX,MAAM,qBAAqB,CAAC;AAM7B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAKtD;;;;;;;;;;GAUG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAClB;IACZ,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA0C;IACpE,OAAO,CAAC,mBAAmB,CACf;IAGZ,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgD;IAG9E,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IAEpD;;;;;OAKG;;IAQH;;;;;;;;;OASG;IACI,OAAO,IAAI,IAAI;IAQtB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACH,cAAc,CACZ,gBAAgB,EAAE,UAAU,EAC5B,gBAAgB,EAAE,UAAU,EAE5B,SAAS,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,EAChD,cAAc,EAAE,aAAa,EAC7B,YAAY,EAAE,uBAAuB,GACpC,eAAe;IA4FlB;;;;;;;;;;;;;OAaG;IACH,OAAO,CAAC,oBAAoB;IA0B5B;;;;;;;;;;;;;;;;;;OAkBG;IACH,OAAO,CAAC,kBAAkB;IAwD1B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;;;;;;;;;;;;;OAcG;IACH,OAAO,CAAC,kBAAkB;IA6B1B;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,oBAAoB;IAkB5B;;;;;;;;;OASG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;;;;;OASG;IACH,OAAO,CAAC,iBAAiB;IAQzB;;;;;;;;OAQG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;;;;;OAQG;IACH,OAAO,CAAC,kBAAkB;IAa1B;;;;;;;;OAQG;IACH,OAAO,CAAC,uBAAuB;IA8D/B;;;;;;;;;OASG;IACH,OAAO,CAAC,uBAAuB;IAS/B;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,OAAO,CAAC,2BAA2B;IAmDnC;;;;;;;OAOG;IACH,cAAc,CAAC,MAAM,EAAE,uBAAuB,GAAG,WAAW,GAAG,SAAS;IAIxE;;;;;;OAMG;IACH,mBAAmB,IAAI,WAAW,CAAC,uBAAuB,EAAE,WAAW,CAAC;IAIxE;;;;;;;OAOG;IACH,sBAAsB,CACpB,MAAM,EAAE,uBAAuB,GAC9B,SAAS,UAAU,EAAE;CAGzB;AAED,eAAe,kBAAkB,CAAC"}
@@ -60,7 +60,6 @@ import * as THREE from "three";
60
60
  * Provides efficient collision detection for combat using bounding boxes and raycasting.
61
61
  * Optimized for 60fps performance with multiple simultaneous collision checks.
62
62
  *
63
- * @public
64
63
  * @category Combat Systems
65
64
  * @korean 충돌감지엔진
66
65
  */
@@ -90,7 +89,6 @@ var CollisionDetection = class {
90
89
  * Disposes of cached geometries and releases memory to prevent leaks.
91
90
  * Should be called when the CollisionDetection instance is no longer needed.
92
91
  *
93
- * @public
94
92
  * @korean 자원정리
95
93
  */
96
94
  dispose() {
@@ -126,7 +124,6 @@ var CollisionDetection = class {
126
124
  * );
127
125
  * ```
128
126
  *
129
- * @public
130
127
  * @korean 공격타격확인
131
128
  */
132
129
  checkAttackHit(attackerPosition, defenderPosition, technique, attackerStance, targetRegion) {
@@ -507,7 +504,6 @@ var CollisionDetection = class {
507
504
  * @param region - Anatomical region
508
505
  * @returns Bounding box or undefined if not found
509
506
  *
510
- * @public
511
507
  * @korean 경계상자조회
512
508
  */
513
509
  getBoundingBox(region) {
@@ -518,7 +514,6 @@ var CollisionDetection = class {
518
514
  *
519
515
  * @returns Map of all bounding boxes by region
520
516
  *
521
- * @public
522
517
  * @korean 모든경계상자조회
523
518
  */
524
519
  getAllBoundingBoxes() {
@@ -530,7 +525,6 @@ var CollisionDetection = class {
530
525
  * @param region - Anatomical region
531
526
  * @returns Array of vital points in that region
532
527
  *
533
- * @public
534
528
  * @korean 영역별급소조회
535
529
  */
536
530
  getVitalPointsInRegion(region) {