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