blacktrigram 0.7.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +866 -0
- package/SECURITY.md +124 -0
- package/lib/App.d.ts +4 -0
- package/lib/App.d.ts.map +1 -0
- package/lib/App2.js +386 -0
- package/lib/App2.js.map +1 -0
- package/lib/_virtual/_rolldown/runtime.js +13 -0
- package/lib/assets/index.css +1146 -0
- package/lib/audio/AudioAssetLoader.d.ts +101 -0
- package/lib/audio/AudioAssetLoader.d.ts.map +1 -0
- package/lib/audio/AudioAssetLoader.js +245 -0
- package/lib/audio/AudioAssetLoader.js.map +1 -0
- package/lib/audio/AudioAssetRegistry.d.ts +126 -0
- package/lib/audio/AudioAssetRegistry.d.ts.map +1 -0
- package/lib/audio/AudioAssetRegistry.js +970 -0
- package/lib/audio/AudioAssetRegistry.js.map +1 -0
- package/lib/audio/AudioCache.d.ts +135 -0
- package/lib/audio/AudioCache.d.ts.map +1 -0
- package/lib/audio/AudioCache.js +211 -0
- package/lib/audio/AudioCache.js.map +1 -0
- package/lib/audio/AudioManager.d.ts +162 -0
- package/lib/audio/AudioManager.d.ts.map +1 -0
- package/lib/audio/AudioManager.js +508 -0
- package/lib/audio/AudioManager.js.map +1 -0
- package/lib/audio/AudioMonitor.d.ts +122 -0
- package/lib/audio/AudioMonitor.d.ts.map +1 -0
- package/lib/audio/AudioMonitor.js +215 -0
- package/lib/audio/AudioMonitor.js.map +1 -0
- package/lib/audio/AudioPool.d.ts +108 -0
- package/lib/audio/AudioPool.d.ts.map +1 -0
- package/lib/audio/AudioPool.js +206 -0
- package/lib/audio/AudioPool.js.map +1 -0
- package/lib/audio/AudioProvider.d.ts +28 -0
- package/lib/audio/AudioProvider.d.ts.map +1 -0
- package/lib/audio/AudioProvider.js +135 -0
- package/lib/audio/AudioProvider.js.map +1 -0
- package/lib/audio/AudioUtils.d.ts +77 -0
- package/lib/audio/AudioUtils.d.ts.map +1 -0
- package/lib/audio/AudioUtils.js +164 -0
- package/lib/audio/AudioUtils.js.map +1 -0
- package/lib/audio/BoneImpactAudioMap.d.ts +64 -0
- package/lib/audio/BoneImpactAudioMap.d.ts.map +1 -0
- package/lib/audio/BoneImpactAudioMap.js +133 -0
- package/lib/audio/BoneImpactAudioMap.js.map +1 -0
- package/lib/audio/VariantSelector.d.ts +69 -0
- package/lib/audio/VariantSelector.d.ts.map +1 -0
- package/lib/audio/VariantSelector.js +177 -0
- package/lib/audio/VariantSelector.js.map +1 -0
- package/lib/audio/index.d.ts +13 -0
- package/lib/audio/index.d.ts.map +1 -0
- package/lib/audio/index.js +41 -0
- package/lib/audio/index.js.map +1 -0
- package/lib/audio/types.d.ts +220 -0
- package/lib/audio/types.d.ts.map +1 -0
- package/lib/audio/types.js +12 -0
- package/lib/audio/types.js.map +1 -0
- package/lib/components/effects/WindParticles3D.d.ts +83 -0
- package/lib/components/effects/WindParticles3D.d.ts.map +1 -0
- package/lib/components/effects/index.d.ts +6 -0
- package/lib/components/effects/index.d.ts.map +1 -0
- package/lib/components/index.d.ts +5 -0
- package/lib/components/index.d.ts.map +1 -0
- package/lib/components/index.js +74 -0
- package/lib/components/index.js.map +1 -0
- package/lib/components/screens/combat/CombatScreen3D.d.ts +74 -0
- package/lib/components/screens/combat/CombatScreen3D.d.ts.map +1 -0
- package/lib/components/screens/combat/CombatScreen3D.js +1912 -0
- package/lib/components/screens/combat/CombatScreen3D.js.map +1 -0
- package/lib/components/screens/combat/components/controls/CombatButtons.d.ts +39 -0
- package/lib/components/screens/combat/components/controls/CombatButtons.d.ts.map +1 -0
- package/lib/components/screens/combat/components/controls/CombatButtons.js +52 -0
- package/lib/components/screens/combat/components/controls/CombatButtons.js.map +1 -0
- package/lib/components/screens/combat/components/controls/CombatControlsPanel.d.ts +35 -0
- package/lib/components/screens/combat/components/controls/CombatControlsPanel.d.ts.map +1 -0
- package/lib/components/screens/combat/components/controls/CombatControlsPanel.js +78 -0
- package/lib/components/screens/combat/components/controls/CombatControlsPanel.js.map +1 -0
- package/lib/components/screens/combat/components/controls/ControlsGuide.d.ts +23 -0
- package/lib/components/screens/combat/components/controls/ControlsGuide.d.ts.map +1 -0
- package/lib/components/screens/combat/components/controls/ControlsGuide.js +214 -0
- package/lib/components/screens/combat/components/controls/ControlsGuide.js.map +1 -0
- package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts +54 -0
- package/lib/components/screens/combat/components/controls/KeyboardHints.d.ts.map +1 -0
- package/lib/components/screens/combat/components/controls/KeyboardHints.js +357 -0
- package/lib/components/screens/combat/components/controls/KeyboardHints.js.map +1 -0
- package/lib/components/screens/combat/components/controls/PauseMenu.d.ts +32 -0
- package/lib/components/screens/combat/components/controls/PauseMenu.d.ts.map +1 -0
- package/lib/components/screens/combat/components/controls/PauseMenu.js +254 -0
- package/lib/components/screens/combat/components/controls/PauseMenu.js.map +1 -0
- package/lib/components/screens/combat/components/controls/PauseMenuButton.d.ts +63 -0
- package/lib/components/screens/combat/components/controls/PauseMenuButton.d.ts.map +1 -0
- package/lib/components/screens/combat/components/controls/PauseMenuButton.js +108 -0
- package/lib/components/screens/combat/components/controls/PauseMenuButton.js.map +1 -0
- package/lib/components/screens/combat/components/controls/QuickSettings.d.ts +42 -0
- package/lib/components/screens/combat/components/controls/QuickSettings.d.ts.map +1 -0
- package/lib/components/screens/combat/components/controls/QuickSettings.js +259 -0
- package/lib/components/screens/combat/components/controls/QuickSettings.js.map +1 -0
- package/lib/components/screens/combat/components/effects/ArterialSpray3D.d.ts +73 -0
- package/lib/components/screens/combat/components/effects/ArterialSpray3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/BloodDecals3D.d.ts +108 -0
- package/lib/components/screens/combat/components/effects/BloodDecals3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/BloodDecals3D.js +232 -0
- package/lib/components/screens/combat/components/effects/BloodDecals3D.js.map +1 -0
- package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.d.ts +53 -0
- package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js +87 -0
- package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js.map +1 -0
- package/lib/components/screens/combat/components/effects/BloodParticles3D.d.ts +80 -0
- package/lib/components/screens/combat/components/effects/BloodParticles3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/BloodParticles3D.js +278 -0
- package/lib/components/screens/combat/components/effects/BloodParticles3D.js.map +1 -0
- package/lib/components/screens/combat/components/effects/BloodViscosity3D.d.ts +64 -0
- package/lib/components/screens/combat/components/effects/BloodViscosity3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/BloodViscosity3D.js +248 -0
- package/lib/components/screens/combat/components/effects/BloodViscosity3D.js.map +1 -0
- package/lib/components/screens/combat/components/effects/BoneCrackParticles3D.d.ts +60 -0
- package/lib/components/screens/combat/components/effects/BoneCrackParticles3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.d.ts +37 -0
- package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js +184 -0
- package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js.map +1 -0
- package/lib/components/screens/combat/components/effects/ConsciousnessBlur.d.ts +49 -0
- package/lib/components/screens/combat/components/effects/ConsciousnessBlur.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js +66 -0
- package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js.map +1 -0
- package/lib/components/screens/combat/components/effects/DustClouds3D.d.ts +93 -0
- package/lib/components/screens/combat/components/effects/DustClouds3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/EarthCrackEffect3D.d.ts +57 -0
- package/lib/components/screens/combat/components/effects/EarthCrackEffect3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/EarthHealingEffect3D.d.ts +88 -0
- package/lib/components/screens/combat/components/effects/EarthHealingEffect3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/ImpactSparks3D.d.ts +91 -0
- package/lib/components/screens/combat/components/effects/ImpactSparks3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/InternalDamage3D.d.ts +67 -0
- package/lib/components/screens/combat/components/effects/InternalDamage3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/InternalDamage3D.js +261 -0
- package/lib/components/screens/combat/components/effects/InternalDamage3D.js.map +1 -0
- package/lib/components/screens/combat/components/effects/LiPrecisionTargetingOverlay.d.ts +45 -0
- package/lib/components/screens/combat/components/effects/LiPrecisionTargetingOverlay.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/NerveStrikeParticles3D.d.ts +61 -0
- package/lib/components/screens/combat/components/effects/NerveStrikeParticles3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/PainVignette.d.ts +47 -0
- package/lib/components/screens/combat/components/effects/PainVignette.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/PainVignette.js +65 -0
- package/lib/components/screens/combat/components/effects/PainVignette.js.map +1 -0
- package/lib/components/screens/combat/components/effects/ParticleAudio3D.d.ts +52 -0
- package/lib/components/screens/combat/components/effects/ParticleAudio3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/ParticleAudio3D.js +103 -0
- package/lib/components/screens/combat/components/effects/ParticleAudio3D.js.map +1 -0
- package/lib/components/screens/combat/components/effects/TraumaOverlay3D.d.ts +91 -0
- package/lib/components/screens/combat/components/effects/TraumaOverlay3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js +296 -0
- package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js.map +1 -0
- package/lib/components/screens/combat/components/effects/WaterRipple3D.d.ts +64 -0
- package/lib/components/screens/combat/components/effects/WaterRipple3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/WaterWave3D.d.ts +72 -0
- package/lib/components/screens/combat/components/effects/WaterWave3D.d.ts.map +1 -0
- package/lib/components/screens/combat/components/effects/index.d.ts +121 -0
- package/lib/components/screens/combat/components/effects/index.d.ts.map +1 -0
- package/lib/components/screens/combat/components/feedback/MatchCountdown.d.ts +31 -0
- package/lib/components/screens/combat/components/feedback/MatchCountdown.d.ts.map +1 -0
- package/lib/components/screens/combat/components/feedback/MatchCountdown.js +242 -0
- package/lib/components/screens/combat/components/feedback/MatchCountdown.js.map +1 -0
- package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.d.ts +74 -0
- package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js +275 -0
- package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js.map +1 -0
- package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.d.ts +25 -0
- package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.d.ts.map +1 -0
- package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.js +61 -0
- package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.js.map +1 -0
- package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.d.ts +43 -0
- package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js +139 -0
- package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js.map +1 -0
- package/lib/components/screens/combat/components/hud/CombatBottomHUD.d.ts +50 -0
- package/lib/components/screens/combat/components/hud/CombatBottomHUD.d.ts.map +1 -0
- package/lib/components/screens/combat/components/hud/CombatBottomHUD.js +155 -0
- package/lib/components/screens/combat/components/hud/CombatBottomHUD.js.map +1 -0
- package/lib/components/screens/combat/components/hud/CombatLeftHUD.d.ts +54 -0
- package/lib/components/screens/combat/components/hud/CombatLeftHUD.d.ts.map +1 -0
- package/lib/components/screens/combat/components/hud/CombatLeftHUD.js +103 -0
- package/lib/components/screens/combat/components/hud/CombatLeftHUD.js.map +1 -0
- package/lib/components/screens/combat/components/hud/CombatRightHUD.d.ts +54 -0
- package/lib/components/screens/combat/components/hud/CombatRightHUD.d.ts.map +1 -0
- package/lib/components/screens/combat/components/hud/CombatRightHUD.js +101 -0
- package/lib/components/screens/combat/components/hud/CombatRightHUD.js.map +1 -0
- package/lib/components/screens/combat/components/hud/CombatTopHUD.d.ts +47 -0
- package/lib/components/screens/combat/components/hud/CombatTopHUD.d.ts.map +1 -0
- package/lib/components/screens/combat/components/hud/CombatTopHUD.js +141 -0
- package/lib/components/screens/combat/components/hud/CombatTopHUD.js.map +1 -0
- package/lib/components/screens/combat/components/hud/DifficultyIndicator.d.ts +25 -0
- package/lib/components/screens/combat/components/hud/DifficultyIndicator.d.ts.map +1 -0
- package/lib/components/screens/combat/components/hud/DifficultyIndicator.js +129 -0
- package/lib/components/screens/combat/components/hud/DifficultyIndicator.js.map +1 -0
- package/lib/components/screens/combat/components/hud/FPSMonitor.d.ts +48 -0
- package/lib/components/screens/combat/components/hud/FPSMonitor.d.ts.map +1 -0
- package/lib/components/screens/combat/components/hud/FPSMonitor.js +131 -0
- package/lib/components/screens/combat/components/hud/FPSMonitor.js.map +1 -0
- package/lib/components/screens/combat/components/hud/MobileControlsWrapper.d.ts +82 -0
- package/lib/components/screens/combat/components/hud/MobileControlsWrapper.d.ts.map +1 -0
- package/lib/components/screens/combat/components/hud/MobileControlsWrapper.js +73 -0
- package/lib/components/screens/combat/components/hud/MobileControlsWrapper.js.map +1 -0
- package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.d.ts +80 -0
- package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js +79 -0
- package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js.map +1 -0
- package/lib/components/screens/combat/components/hud/index.d.ts +22 -0
- package/lib/components/screens/combat/components/hud/index.d.ts.map +1 -0
- package/lib/components/screens/combat/components/hud/index.js +4 -0
- package/lib/components/screens/combat/components/index.d.ts +47 -0
- package/lib/components/screens/combat/components/index.d.ts.map +1 -0
- package/lib/components/screens/combat/components/index.js +23 -0
- package/lib/components/screens/combat/components/indicators/BalanceIndicator.d.ts +52 -0
- package/lib/components/screens/combat/components/indicators/BalanceIndicator.d.ts.map +1 -0
- package/lib/components/screens/combat/components/indicators/BalanceIndicator.js +113 -0
- package/lib/components/screens/combat/components/indicators/BalanceIndicator.js.map +1 -0
- package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts +49 -0
- package/lib/components/screens/combat/components/indicators/InputBufferDisplay.d.ts.map +1 -0
- package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js +150 -0
- package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js.map +1 -0
- package/lib/components/screens/combat/components/indicators/StaminaWarning.d.ts +44 -0
- package/lib/components/screens/combat/components/indicators/StaminaWarning.d.ts.map +1 -0
- package/lib/components/screens/combat/components/indicators/StaminaWarning.js +83 -0
- package/lib/components/screens/combat/components/indicators/StaminaWarning.js.map +1 -0
- package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts +83 -0
- package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.d.ts.map +1 -0
- package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js +161 -0
- package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js.map +1 -0
- package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts +38 -0
- package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts.map +1 -0
- package/lib/components/screens/combat/helpers/AnimationUpdater.js +37 -0
- package/lib/components/screens/combat/helpers/AnimationUpdater.js.map +1 -0
- package/lib/components/screens/combat/helpers/combatHelpers.d.ts +37 -0
- package/lib/components/screens/combat/helpers/combatHelpers.d.ts.map +1 -0
- package/lib/components/screens/combat/helpers/combatHelpers.js +33 -0
- package/lib/components/screens/combat/helpers/combatHelpers.js.map +1 -0
- package/lib/components/screens/combat/helpers/index.d.ts +8 -0
- package/lib/components/screens/combat/helpers/index.d.ts.map +1 -0
- package/lib/components/screens/combat/helpers/index.js +2 -0
- package/lib/components/screens/combat/hooks/useAICombat.d.ts +108 -0
- package/lib/components/screens/combat/hooks/useAICombat.d.ts.map +1 -0
- package/lib/components/screens/combat/hooks/useAICombat.js +806 -0
- package/lib/components/screens/combat/hooks/useAICombat.js.map +1 -0
- package/lib/components/screens/combat/hooks/useCombatActions.d.ts +106 -0
- package/lib/components/screens/combat/hooks/useCombatActions.d.ts.map +1 -0
- package/lib/components/screens/combat/hooks/useCombatActions.js +766 -0
- package/lib/components/screens/combat/hooks/useCombatActions.js.map +1 -0
- package/lib/components/screens/combat/hooks/useCombatAttackMovement.d.ts +85 -0
- package/lib/components/screens/combat/hooks/useCombatAttackMovement.d.ts.map +1 -0
- package/lib/components/screens/combat/hooks/useCombatAttackMovement.js +202 -0
- package/lib/components/screens/combat/hooks/useCombatAttackMovement.js.map +1 -0
- package/lib/components/screens/combat/hooks/useCombatAudio.d.ts +40 -0
- package/lib/components/screens/combat/hooks/useCombatAudio.d.ts.map +1 -0
- package/lib/components/screens/combat/hooks/useCombatAudio.js +287 -0
- package/lib/components/screens/combat/hooks/useCombatAudio.js.map +1 -0
- package/lib/components/screens/combat/hooks/useCombatLayout.d.ts +61 -0
- package/lib/components/screens/combat/hooks/useCombatLayout.d.ts.map +1 -0
- package/lib/components/screens/combat/hooks/useCombatLayout.js +89 -0
- package/lib/components/screens/combat/hooks/useCombatLayout.js.map +1 -0
- package/lib/components/screens/combat/hooks/useCombatState.d.ts +75 -0
- package/lib/components/screens/combat/hooks/useCombatState.d.ts.map +1 -0
- package/lib/components/screens/combat/hooks/useCombatState.js +182 -0
- package/lib/components/screens/combat/hooks/useCombatState.js.map +1 -0
- package/lib/components/screens/combat/hooks/useGrapplingAudio.d.ts +36 -0
- package/lib/components/screens/combat/hooks/useGrapplingAudio.d.ts.map +1 -0
- package/lib/components/screens/combat/hooks/usePreloadCombatAudio.d.ts +63 -0
- package/lib/components/screens/combat/hooks/usePreloadCombatAudio.d.ts.map +1 -0
- package/lib/components/screens/combat/index.d.ts +4 -0
- package/lib/components/screens/combat/index.d.ts.map +1 -0
- package/lib/components/screens/combat/index.js +25 -0
- package/lib/components/screens/controls/ControlsScreen3D.d.ts +12 -0
- package/lib/components/screens/controls/ControlsScreen3D.d.ts.map +1 -0
- package/lib/components/screens/controls/ControlsScreen3D.js +1248 -0
- package/lib/components/screens/controls/ControlsScreen3D.js.map +1 -0
- package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.d.ts +35 -0
- package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js +155 -0
- package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js.map +1 -0
- package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.d.ts +31 -0
- package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.js +100 -0
- package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.js.map +1 -0
- package/lib/components/screens/controls/components/GamepadVisualization3D.d.ts +32 -0
- package/lib/components/screens/controls/components/GamepadVisualization3D.d.ts.map +1 -0
- package/lib/components/screens/controls/components/GamepadVisualization3D.js +250 -0
- package/lib/components/screens/controls/components/GamepadVisualization3D.js.map +1 -0
- package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.d.ts +35 -0
- package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js +222 -0
- package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js.map +1 -0
- package/lib/components/screens/controls/components/Key3D.d.ts +36 -0
- package/lib/components/screens/controls/components/Key3D.d.ts.map +1 -0
- package/lib/components/screens/controls/components/Key3D.js +169 -0
- package/lib/components/screens/controls/components/Key3D.js.map +1 -0
- package/lib/components/screens/controls/components/VisualKeyboard3D.d.ts +37 -0
- package/lib/components/screens/controls/components/VisualKeyboard3D.d.ts.map +1 -0
- package/lib/components/screens/controls/components/VisualKeyboard3D.js +120 -0
- package/lib/components/screens/controls/components/VisualKeyboard3D.js.map +1 -0
- package/lib/components/screens/controls/components/index.d.ts +20 -0
- package/lib/components/screens/controls/components/index.d.ts.map +1 -0
- package/lib/components/screens/controls/constants/ControlsConstants.d.ts +67 -0
- package/lib/components/screens/controls/constants/ControlsConstants.d.ts.map +1 -0
- package/lib/components/screens/controls/constants/ControlsConstants.js +504 -0
- package/lib/components/screens/controls/constants/ControlsConstants.js.map +1 -0
- package/lib/components/screens/controls/hooks/useControlsState.d.ts +46 -0
- package/lib/components/screens/controls/hooks/useControlsState.d.ts.map +1 -0
- package/lib/components/screens/controls/hooks/useControlsState.js +71 -0
- package/lib/components/screens/controls/hooks/useControlsState.js.map +1 -0
- package/lib/components/screens/endscreen/EndScreen3D.d.ts +18 -0
- package/lib/components/screens/endscreen/EndScreen3D.d.ts.map +1 -0
- package/lib/components/screens/endscreen/EndScreen3D.js +367 -0
- package/lib/components/screens/endscreen/EndScreen3D.js.map +1 -0
- package/lib/components/screens/endscreen/components/DefeatAnimation3D.d.ts +9 -0
- package/lib/components/screens/endscreen/components/DefeatAnimation3D.d.ts.map +1 -0
- package/lib/components/screens/endscreen/components/DefeatAnimation3D.js +205 -0
- package/lib/components/screens/endscreen/components/DefeatAnimation3D.js.map +1 -0
- package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.d.ts +13 -0
- package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.js +321 -0
- package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.js.map +1 -0
- package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.d.ts +28 -0
- package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js +93 -0
- package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js.map +1 -0
- package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.d.ts +13 -0
- package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js +294 -0
- package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js.map +1 -0
- package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.d.ts +13 -0
- package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js +210 -0
- package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js.map +1 -0
- package/lib/components/screens/endscreen/components/VictoryAnimation3D.d.ts +9 -0
- package/lib/components/screens/endscreen/components/VictoryAnimation3D.d.ts.map +1 -0
- package/lib/components/screens/endscreen/components/VictoryAnimation3D.js +299 -0
- package/lib/components/screens/endscreen/components/VictoryAnimation3D.js.map +1 -0
- package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.d.ts +14 -0
- package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js +170 -0
- package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js.map +1 -0
- package/lib/components/screens/endscreen/components/animations.d.ts +25 -0
- package/lib/components/screens/endscreen/components/animations.d.ts.map +1 -0
- package/lib/components/screens/endscreen/components/animations.js +71 -0
- package/lib/components/screens/endscreen/components/animations.js.map +1 -0
- package/lib/components/screens/endscreen/components/index.d.ts +19 -0
- package/lib/components/screens/endscreen/components/index.d.ts.map +1 -0
- package/lib/components/screens/endscreen/components/index.js +8 -0
- package/lib/components/screens/endscreen/index.d.ts +9 -0
- package/lib/components/screens/endscreen/index.d.ts.map +1 -0
- package/lib/components/screens/endscreen/index.js +10 -0
- package/lib/components/screens/intro/IntroScreen3D.d.ts +16 -0
- package/lib/components/screens/intro/IntroScreen3D.d.ts.map +1 -0
- package/lib/components/screens/intro/IntroScreen3D.js +488 -0
- package/lib/components/screens/intro/IntroScreen3D.js.map +1 -0
- package/lib/components/screens/intro/components/AbilityListOverlayHtml.d.ts +53 -0
- package/lib/components/screens/intro/components/AbilityListOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/intro/components/AbilityListOverlayHtml.js +146 -0
- package/lib/components/screens/intro/components/AbilityListOverlayHtml.js.map +1 -0
- package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.d.ts +20 -0
- package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js +154 -0
- package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js.map +1 -0
- package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.d.ts +38 -0
- package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js +235 -0
- package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js.map +1 -0
- package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.d.ts +35 -0
- package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js +325 -0
- package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js.map +1 -0
- package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.d.ts +19 -0
- package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js +88 -0
- package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js.map +1 -0
- package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.d.ts +65 -0
- package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js +143 -0
- package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js.map +1 -0
- package/lib/components/screens/intro/components/MenuSectionOverlayHtml.d.ts +27 -0
- package/lib/components/screens/intro/components/MenuSectionOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js +153 -0
- package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js.map +1 -0
- package/lib/components/screens/intro/components/StatBarOverlayHtml.d.ts +47 -0
- package/lib/components/screens/intro/components/StatBarOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/intro/components/StatBarOverlayHtml.js +128 -0
- package/lib/components/screens/intro/components/StatBarOverlayHtml.js.map +1 -0
- package/lib/components/screens/philosophy/PhilosophyScreen3D.d.ts +12 -0
- package/lib/components/screens/philosophy/PhilosophyScreen3D.d.ts.map +1 -0
- package/lib/components/screens/philosophy/PhilosophyScreen3D.js +561 -0
- package/lib/components/screens/philosophy/PhilosophyScreen3D.js.map +1 -0
- package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts +40 -0
- package/lib/components/screens/philosophy/components/InteractiveTrigramGridOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts +40 -0
- package/lib/components/screens/philosophy/components/PhilosophyNavigationOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts +46 -0
- package/lib/components/screens/philosophy/components/PhilosophySectionOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts +42 -0
- package/lib/components/screens/philosophy/components/PhilosophyTextOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts +49 -0
- package/lib/components/screens/philosophy/components/TrigramSymbol3D.d.ts.map +1 -0
- package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts +43 -0
- package/lib/components/screens/philosophy/components/TrigramVisualization3D.d.ts.map +1 -0
- package/lib/components/screens/philosophy/components/index.d.ts +23 -0
- package/lib/components/screens/philosophy/components/index.d.ts.map +1 -0
- package/lib/components/screens/philosophy/hooks/index.d.ts +10 -0
- package/lib/components/screens/philosophy/hooks/index.d.ts.map +1 -0
- package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts +50 -0
- package/lib/components/screens/philosophy/hooks/usePhilosophyState.d.ts.map +1 -0
- package/lib/components/screens/training/TrainingScreen3D.d.ts +51 -0
- package/lib/components/screens/training/TrainingScreen3D.d.ts.map +1 -0
- package/lib/components/screens/training/TrainingScreen3D.js +947 -0
- package/lib/components/screens/training/TrainingScreen3D.js.map +1 -0
- package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.d.ts +31 -0
- package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js +189 -0
- package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js.map +1 -0
- package/lib/components/screens/training/components/AnatomyOverlay3D.d.ts +31 -0
- package/lib/components/screens/training/components/AnatomyOverlay3D.d.ts.map +1 -0
- package/lib/components/screens/training/components/AnatomyOverlay3D.js +679 -0
- package/lib/components/screens/training/components/AnatomyOverlay3D.js.map +1 -0
- package/lib/components/screens/training/components/DamageNumber3D.d.ts +28 -0
- package/lib/components/screens/training/components/DamageNumber3D.d.ts.map +1 -0
- package/lib/components/screens/training/components/DamageNumber3D.js +6 -0
- package/lib/components/screens/training/components/FootPlacementMarkers3D.d.ts +47 -0
- package/lib/components/screens/training/components/FootPlacementMarkers3D.d.ts.map +1 -0
- package/lib/components/screens/training/components/FootPlacementMarkers3D.js +380 -0
- package/lib/components/screens/training/components/FootPlacementMarkers3D.js.map +1 -0
- package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.d.ts +47 -0
- package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js +292 -0
- package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js.map +1 -0
- package/lib/components/screens/training/components/HitFeedbackEffect3D.d.ts +32 -0
- package/lib/components/screens/training/components/HitFeedbackEffect3D.d.ts.map +1 -0
- package/lib/components/screens/training/components/HitFeedbackEffect3D.js +258 -0
- package/lib/components/screens/training/components/HitFeedbackEffect3D.js.map +1 -0
- package/lib/components/screens/training/components/TrainingAICharacter3D.d.ts +36 -0
- package/lib/components/screens/training/components/TrainingAICharacter3D.d.ts.map +1 -0
- package/lib/components/screens/training/components/TrainingAICharacter3D.js +6 -0
- package/lib/components/screens/training/components/TrainingArena3D.d.ts +22 -0
- package/lib/components/screens/training/components/TrainingArena3D.d.ts.map +1 -0
- package/lib/components/screens/training/components/TrainingArena3D.js +5 -0
- package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.d.ts +73 -0
- package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.js +107 -0
- package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.js.map +1 -0
- package/lib/components/screens/training/components/TrainingControlsOverlayHtml.d.ts +50 -0
- package/lib/components/screens/training/components/TrainingControlsOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js +129 -0
- package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js.map +1 -0
- package/lib/components/screens/training/components/TrainingDummy3D.d.ts +72 -0
- package/lib/components/screens/training/components/TrainingDummy3D.d.ts.map +1 -0
- package/lib/components/screens/training/components/TrainingDummy3D.js +298 -0
- package/lib/components/screens/training/components/TrainingDummy3D.js.map +1 -0
- package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.d.ts +30 -0
- package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js +44 -0
- package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js.map +1 -0
- package/lib/components/screens/training/components/TrainingHitEffects3D.d.ts +27 -0
- package/lib/components/screens/training/components/TrainingHitEffects3D.d.ts.map +1 -0
- package/lib/components/screens/training/components/TrainingHitEffects3D.js +6 -0
- package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.d.ts +51 -0
- package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js +188 -0
- package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js.map +1 -0
- package/lib/components/screens/training/components/TrainingStatsOverlayHtml.d.ts +63 -0
- package/lib/components/screens/training/components/TrainingStatsOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js +253 -0
- package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js.map +1 -0
- package/lib/components/screens/training/components/VitalPointMarker3D.d.ts +37 -0
- package/lib/components/screens/training/components/VitalPointMarker3D.d.ts.map +1 -0
- package/lib/components/screens/training/components/VitalPointMarker3D.js +210 -0
- package/lib/components/screens/training/components/VitalPointMarker3D.js.map +1 -0
- package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.d.ts +29 -0
- package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.d.ts.map +1 -0
- package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js +195 -0
- package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js.map +1 -0
- package/lib/components/screens/training/components/hud/TrainingBottomHUD.d.ts +59 -0
- package/lib/components/screens/training/components/hud/TrainingBottomHUD.d.ts.map +1 -0
- package/lib/components/screens/training/components/hud/TrainingBottomHUD.js +145 -0
- package/lib/components/screens/training/components/hud/TrainingBottomHUD.js.map +1 -0
- package/lib/components/screens/training/components/hud/TrainingLeftHUD.d.ts +47 -0
- package/lib/components/screens/training/components/hud/TrainingLeftHUD.d.ts.map +1 -0
- package/lib/components/screens/training/components/hud/TrainingLeftHUD.js +59 -0
- package/lib/components/screens/training/components/hud/TrainingLeftHUD.js.map +1 -0
- package/lib/components/screens/training/components/hud/TrainingRightHUD.d.ts +68 -0
- package/lib/components/screens/training/components/hud/TrainingRightHUD.d.ts.map +1 -0
- package/lib/components/screens/training/components/hud/TrainingRightHUD.js +93 -0
- package/lib/components/screens/training/components/hud/TrainingRightHUD.js.map +1 -0
- package/lib/components/screens/training/components/hud/TrainingTopHUD.d.ts +55 -0
- package/lib/components/screens/training/components/hud/TrainingTopHUD.d.ts.map +1 -0
- package/lib/components/screens/training/components/hud/TrainingTopHUD.js +184 -0
- package/lib/components/screens/training/components/hud/TrainingTopHUD.js.map +1 -0
- package/lib/components/screens/training/components/hud/index.d.ts +13 -0
- package/lib/components/screens/training/components/hud/index.d.ts.map +1 -0
- package/lib/components/screens/training/components/hud/index.js +4 -0
- package/lib/components/screens/training/components/index.d.ts +22 -0
- package/lib/components/screens/training/components/index.d.ts.map +1 -0
- package/lib/components/screens/training/components/index.js +19 -0
- package/lib/components/screens/training/hooks/useAttackMovement.d.ts +69 -0
- package/lib/components/screens/training/hooks/useAttackMovement.d.ts.map +1 -0
- package/lib/components/screens/training/hooks/useAttackMovement.js +118 -0
- package/lib/components/screens/training/hooks/useAttackMovement.js.map +1 -0
- package/lib/components/screens/training/hooks/useTrainingActions.d.ts +82 -0
- package/lib/components/screens/training/hooks/useTrainingActions.d.ts.map +1 -0
- package/lib/components/screens/training/hooks/useTrainingActions.js +284 -0
- package/lib/components/screens/training/hooks/useTrainingActions.js.map +1 -0
- package/lib/components/screens/training/hooks/useTrainingLayout.d.ts +62 -0
- package/lib/components/screens/training/hooks/useTrainingLayout.d.ts.map +1 -0
- package/lib/components/screens/training/hooks/useTrainingLayout.js +96 -0
- package/lib/components/screens/training/hooks/useTrainingLayout.js.map +1 -0
- package/lib/components/screens/training/hooks/useTrainingState.d.ts +100 -0
- package/lib/components/screens/training/hooks/useTrainingState.d.ts.map +1 -0
- package/lib/components/screens/training/hooks/useTrainingState.js +344 -0
- package/lib/components/screens/training/hooks/useTrainingState.js.map +1 -0
- package/lib/components/screens/training/index.d.ts +4 -0
- package/lib/components/screens/training/index.d.ts.map +1 -0
- package/lib/components/screens/training/index.js +16 -0
- package/lib/components/shared/base/AccessibilityProvider.d.ts +51 -0
- package/lib/components/shared/base/AccessibilityProvider.d.ts.map +1 -0
- package/lib/components/shared/base/AccessibilityProvider.js +71 -0
- package/lib/components/shared/base/AccessibilityProvider.js.map +1 -0
- package/lib/components/shared/base/BaseButton.d.ts +42 -0
- package/lib/components/shared/base/BaseButton.d.ts.map +1 -0
- package/lib/components/shared/base/BaseButton.js +214 -0
- package/lib/components/shared/base/BaseButton.js.map +1 -0
- package/lib/components/shared/base/BaseButtonOverlayHtml.d.ts +52 -0
- package/lib/components/shared/base/BaseButtonOverlayHtml.d.ts.map +1 -0
- package/lib/components/shared/base/BaseButtonOverlayHtml.js +130 -0
- package/lib/components/shared/base/BaseButtonOverlayHtml.js.map +1 -0
- package/lib/components/shared/base/BasePanel.d.ts +30 -0
- package/lib/components/shared/base/BasePanel.d.ts.map +1 -0
- package/lib/components/shared/base/BasePanel.js +83 -0
- package/lib/components/shared/base/BasePanel.js.map +1 -0
- package/lib/components/shared/base/BaseText.d.ts +40 -0
- package/lib/components/shared/base/BaseText.d.ts.map +1 -0
- package/lib/components/shared/base/BaseText.js +157 -0
- package/lib/components/shared/base/BaseText.js.map +1 -0
- package/lib/components/shared/base/ResponsiveContainer.d.ts +126 -0
- package/lib/components/shared/base/ResponsiveContainer.d.ts.map +1 -0
- package/lib/components/shared/base/index.d.ts +23 -0
- package/lib/components/shared/base/index.d.ts.map +1 -0
- package/lib/components/shared/base/index.js +6 -0
- package/lib/components/shared/base/layoutUtils.d.ts +102 -0
- package/lib/components/shared/base/layoutUtils.d.ts.map +1 -0
- package/lib/components/shared/base/useKoreanTheme.d.ts +206 -0
- package/lib/components/shared/base/useKoreanTheme.d.ts.map +1 -0
- package/lib/components/shared/base/useKoreanTheme.js +169 -0
- package/lib/components/shared/base/useKoreanTheme.js.map +1 -0
- package/lib/components/shared/debug/PerformanceDebugOverlayHtml.d.ts +32 -0
- package/lib/components/shared/debug/PerformanceDebugOverlayHtml.d.ts.map +1 -0
- package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js +69 -0
- package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js.map +1 -0
- package/lib/components/shared/effects/ScreenFlash.d.ts +98 -0
- package/lib/components/shared/effects/ScreenFlash.d.ts.map +1 -0
- package/lib/components/shared/mobile/ActionButtons.d.ts +44 -0
- package/lib/components/shared/mobile/ActionButtons.d.ts.map +1 -0
- package/lib/components/shared/mobile/ActionButtons.js +324 -0
- package/lib/components/shared/mobile/ActionButtons.js.map +1 -0
- package/lib/components/shared/mobile/GestureRecognizerPure.d.ts +64 -0
- package/lib/components/shared/mobile/GestureRecognizerPure.d.ts.map +1 -0
- package/lib/components/shared/mobile/GestureRecognizerPure.js +231 -0
- package/lib/components/shared/mobile/GestureRecognizerPure.js.map +1 -0
- package/lib/components/shared/mobile/HapticController.d.ts +253 -0
- package/lib/components/shared/mobile/HapticController.d.ts.map +1 -0
- package/lib/components/shared/mobile/HapticController.js +280 -0
- package/lib/components/shared/mobile/HapticController.js.map +1 -0
- package/lib/components/shared/mobile/MobileControlsPure.d.ts +43 -0
- package/lib/components/shared/mobile/MobileControlsPure.d.ts.map +1 -0
- package/lib/components/shared/mobile/MobileControlsPure.js +294 -0
- package/lib/components/shared/mobile/MobileControlsPure.js.map +1 -0
- package/lib/components/shared/mobile/PerformanceMonitor.d.ts +249 -0
- package/lib/components/shared/mobile/PerformanceMonitor.d.ts.map +1 -0
- package/lib/components/shared/mobile/StanceWheelPure.d.ts +78 -0
- package/lib/components/shared/mobile/StanceWheelPure.d.ts.map +1 -0
- package/lib/components/shared/mobile/StanceWheelPure.js +386 -0
- package/lib/components/shared/mobile/StanceWheelPure.js.map +1 -0
- package/lib/components/shared/mobile/TouchOptimizer.d.ts +154 -0
- package/lib/components/shared/mobile/TouchOptimizer.d.ts.map +1 -0
- package/lib/components/shared/mobile/TouchOptimizer.js +83 -0
- package/lib/components/shared/mobile/TouchOptimizer.js.map +1 -0
- package/lib/components/shared/mobile/VirtualDPad.d.ts +49 -0
- package/lib/components/shared/mobile/VirtualDPad.d.ts.map +1 -0
- package/lib/components/shared/mobile/VirtualDPad.js +289 -0
- package/lib/components/shared/mobile/VirtualDPad.js.map +1 -0
- package/lib/components/shared/mobile/index.d.ts +31 -0
- package/lib/components/shared/mobile/index.d.ts.map +1 -0
- package/lib/components/shared/mobile/index.js +7 -0
- package/lib/components/shared/three/anatomy/BodySurface.d.ts +78 -0
- package/lib/components/shared/three/anatomy/BodySurface.d.ts.map +1 -0
- package/lib/components/shared/three/anatomy/BodySurface.js +393 -0
- package/lib/components/shared/three/anatomy/BodySurface.js.map +1 -0
- package/lib/components/shared/three/anatomy/BoneAttachedMuscles.d.ts +147 -0
- package/lib/components/shared/three/anatomy/BoneAttachedMuscles.d.ts.map +1 -0
- package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js +541 -0
- package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js.map +1 -0
- package/lib/components/shared/three/anatomy/BoneClothing.d.ts +89 -0
- package/lib/components/shared/three/anatomy/BoneClothing.d.ts.map +1 -0
- package/lib/components/shared/three/anatomy/BoneClothing.js +345 -0
- package/lib/components/shared/three/anatomy/BoneClothing.js.map +1 -0
- package/lib/components/shared/three/anatomy/BoneRenderer.d.ts +129 -0
- package/lib/components/shared/three/anatomy/BoneRenderer.d.ts.map +1 -0
- package/lib/components/shared/three/anatomy/BoneRenderer.js +266 -0
- package/lib/components/shared/three/anatomy/BoneRenderer.js.map +1 -0
- package/lib/components/shared/three/anatomy/Face3D.d.ts +40 -0
- package/lib/components/shared/three/anatomy/Face3D.d.ts.map +1 -0
- package/lib/components/shared/three/anatomy/Face3D.js +426 -0
- package/lib/components/shared/three/anatomy/Face3D.js.map +1 -0
- package/lib/components/shared/three/anatomy/Foot3D.d.ts +71 -0
- package/lib/components/shared/three/anatomy/Foot3D.d.ts.map +1 -0
- package/lib/components/shared/three/anatomy/Foot3D.js +178 -0
- package/lib/components/shared/three/anatomy/Foot3D.js.map +1 -0
- package/lib/components/shared/three/anatomy/Hand3D.d.ts +101 -0
- package/lib/components/shared/three/anatomy/Hand3D.d.ts.map +1 -0
- package/lib/components/shared/three/anatomy/Hand3D.js +376 -0
- package/lib/components/shared/three/anatomy/Hand3D.js.map +1 -0
- package/lib/components/shared/three/effects/ActionFeedback.d.ts +78 -0
- package/lib/components/shared/three/effects/ActionFeedback.d.ts.map +1 -0
- package/lib/components/shared/three/effects/ActionFeedback.js +236 -0
- package/lib/components/shared/three/effects/ActionFeedback.js.map +1 -0
- package/lib/components/shared/three/effects/DamageNumbers.d.ts +36 -0
- package/lib/components/shared/three/effects/DamageNumbers.d.ts.map +1 -0
- package/lib/components/shared/three/effects/DamageNumbers.js +148 -0
- package/lib/components/shared/three/effects/DamageNumbers.js.map +1 -0
- package/lib/components/shared/three/effects/ExplosiveBurstEffect3D.d.ts +41 -0
- package/lib/components/shared/three/effects/ExplosiveBurstEffect3D.d.ts.map +1 -0
- package/lib/components/shared/three/effects/GrapplingIndicator3D.d.ts +49 -0
- package/lib/components/shared/three/effects/GrapplingIndicator3D.d.ts.map +1 -0
- package/lib/components/shared/three/effects/HitEffects3D.d.ts +28 -0
- package/lib/components/shared/three/effects/HitEffects3D.d.ts.map +1 -0
- package/lib/components/shared/three/effects/HitEffects3D.js +427 -0
- package/lib/components/shared/three/effects/HitEffects3D.js.map +1 -0
- package/lib/components/shared/three/effects/LimbExposureIndicator3D.d.ts +67 -0
- package/lib/components/shared/three/effects/LimbExposureIndicator3D.d.ts.map +1 -0
- package/lib/components/shared/three/effects/NerveDisruptionEffect3D.d.ts +63 -0
- package/lib/components/shared/three/effects/NerveDisruptionEffect3D.d.ts.map +1 -0
- package/lib/components/shared/three/effects/PlayerStateIndicators.d.ts +36 -0
- package/lib/components/shared/three/effects/PlayerStateIndicators.d.ts.map +1 -0
- package/lib/components/shared/three/effects/PlayerStateIndicators.js +237 -0
- package/lib/components/shared/three/effects/PlayerStateIndicators.js.map +1 -0
- package/lib/components/shared/three/effects/StanceSymbol3D.d.ts +52 -0
- package/lib/components/shared/three/effects/StanceSymbol3D.d.ts.map +1 -0
- package/lib/components/shared/three/effects/StanceSymbol3D.js +128 -0
- package/lib/components/shared/three/effects/StanceSymbol3D.js.map +1 -0
- package/lib/components/shared/three/effects/StanceTransitionEffect.d.ts +56 -0
- package/lib/components/shared/three/effects/StanceTransitionEffect.d.ts.map +1 -0
- package/lib/components/shared/three/effects/StanceTransitionEffect.js +174 -0
- package/lib/components/shared/three/effects/StanceTransitionEffect.js.map +1 -0
- package/lib/components/shared/three/effects/ThunderEffect3D.d.ts +39 -0
- package/lib/components/shared/three/effects/ThunderEffect3D.d.ts.map +1 -0
- package/lib/components/shared/three/effects/VitalPointMarkers3D.d.ts +48 -0
- package/lib/components/shared/three/effects/VitalPointMarkers3D.d.ts.map +1 -0
- package/lib/components/shared/three/effects/VitalPointMarkers3D.js +249 -0
- package/lib/components/shared/three/effects/VitalPointMarkers3D.js.map +1 -0
- package/lib/components/shared/three/index.d.ts +30 -0
- package/lib/components/shared/three/index.d.ts.map +1 -0
- package/lib/components/shared/three/index.js +9 -0
- package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts +184 -0
- package/lib/components/shared/three/indicators/ElementalColorSystem.d.ts.map +1 -0
- package/lib/components/shared/three/indicators/ElementalColorSystem.js +147 -0
- package/lib/components/shared/three/indicators/ElementalColorSystem.js.map +1 -0
- package/lib/components/shared/three/indicators/GuardIndicator.d.ts +58 -0
- package/lib/components/shared/three/indicators/GuardIndicator.d.ts.map +1 -0
- package/lib/components/shared/three/indicators/GuardIndicator.js +259 -0
- package/lib/components/shared/three/indicators/GuardIndicator.js.map +1 -0
- package/lib/components/shared/three/indicators/HapticFeedback.d.ts +184 -0
- package/lib/components/shared/three/indicators/HapticFeedback.d.ts.map +1 -0
- package/lib/components/shared/three/indicators/HapticFeedback.js +46 -0
- package/lib/components/shared/three/indicators/HapticFeedback.js.map +1 -0
- package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts +53 -0
- package/lib/components/shared/three/indicators/StanceChangeIndicator.d.ts.map +1 -0
- package/lib/components/shared/three/indicators/StanceChangeIndicator.js +222 -0
- package/lib/components/shared/three/indicators/StanceChangeIndicator.js.map +1 -0
- package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts +82 -0
- package/lib/components/shared/three/indicators/TrigramSymbol3D.d.ts.map +1 -0
- package/lib/components/shared/three/models/Player3DWithTransitions.d.ts +77 -0
- package/lib/components/shared/three/models/Player3DWithTransitions.d.ts.map +1 -0
- package/lib/components/shared/three/models/Player3DWithTransitions.js +118 -0
- package/lib/components/shared/three/models/Player3DWithTransitions.js.map +1 -0
- package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts +44 -0
- package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts.map +1 -0
- package/lib/components/shared/three/models/SkeletalPlayer3D.js +358 -0
- package/lib/components/shared/three/models/SkeletalPlayer3D.js.map +1 -0
- package/lib/components/shared/three/optimization/AdaptiveQuality.d.ts +107 -0
- package/lib/components/shared/three/optimization/AdaptiveQuality.d.ts.map +1 -0
- package/lib/components/shared/three/optimization/AdaptiveQuality.js +197 -0
- package/lib/components/shared/three/optimization/AdaptiveQuality.js.map +1 -0
- package/lib/components/shared/three/optimization/InstancedGeometry.d.ts +189 -0
- package/lib/components/shared/three/optimization/InstancedGeometry.d.ts.map +1 -0
- package/lib/components/shared/three/optimization/InstancedGeometry.js +3 -0
- package/lib/components/shared/three/optimization/LODSystem.d.ts +126 -0
- package/lib/components/shared/three/optimization/LODSystem.d.ts.map +1 -0
- package/lib/components/shared/three/optimization/LODSystem.js +3 -0
- package/lib/components/shared/three/optimization/index.d.ts +14 -0
- package/lib/components/shared/three/optimization/index.d.ts.map +1 -0
- package/lib/components/shared/three/optimization/index.js +3 -0
- package/lib/components/shared/three/scene/AtmosphericParticles3D.d.ts +31 -0
- package/lib/components/shared/three/scene/AtmosphericParticles3D.d.ts.map +1 -0
- package/lib/components/shared/three/scene/AtmosphericParticles3D.js +84 -0
- package/lib/components/shared/three/scene/AtmosphericParticles3D.js.map +1 -0
- package/lib/components/shared/three/scene/BackgroundScene3D.d.ts +76 -0
- package/lib/components/shared/three/scene/BackgroundScene3D.d.ts.map +1 -0
- package/lib/components/shared/three/scene/BackgroundScene3D.js +124 -0
- package/lib/components/shared/three/scene/BackgroundScene3D.js.map +1 -0
- package/lib/components/shared/three/scene/CombatArena3D.d.ts +38 -0
- package/lib/components/shared/three/scene/CombatArena3D.d.ts.map +1 -0
- package/lib/components/shared/three/scene/CombatArena3D.js +256 -0
- package/lib/components/shared/three/scene/CombatArena3D.js.map +1 -0
- package/lib/components/shared/three/scene/DebugCollision.d.ts +64 -0
- package/lib/components/shared/three/scene/DebugCollision.d.ts.map +1 -0
- package/lib/components/shared/three/scene/KoreanSignage3D.d.ts +29 -0
- package/lib/components/shared/three/scene/KoreanSignage3D.d.ts.map +1 -0
- package/lib/components/shared/three/scene/KoreanSignage3D.js +122 -0
- package/lib/components/shared/three/scene/KoreanSignage3D.js.map +1 -0
- package/lib/components/shared/three/ui/ArchetypeCard.d.ts +38 -0
- package/lib/components/shared/three/ui/ArchetypeCard.d.ts.map +1 -0
- package/lib/components/shared/three/ui/ArchetypeCard.js +213 -0
- package/lib/components/shared/three/ui/ArchetypeCard.js.map +1 -0
- package/lib/components/shared/three/ui/BodyPartHealthDisplay.d.ts +45 -0
- package/lib/components/shared/three/ui/BodyPartHealthDisplay.d.ts.map +1 -0
- package/lib/components/shared/three/ui/BodyPartHealthDisplay.js +206 -0
- package/lib/components/shared/three/ui/BodyPartHealthDisplay.js.map +1 -0
- package/lib/components/shared/three/ui/BreathingIndicator.d.ts +25 -0
- package/lib/components/shared/three/ui/BreathingIndicator.d.ts.map +1 -0
- package/lib/components/shared/three/ui/BreathingIndicator2.js +104 -0
- package/lib/components/shared/three/ui/BreathingIndicator2.js.map +1 -0
- package/lib/components/shared/three/ui/CombatReadinessBar.d.ts +43 -0
- package/lib/components/shared/three/ui/CombatReadinessBar.d.ts.map +1 -0
- package/lib/components/shared/three/ui/CombatReadinessBar.js +135 -0
- package/lib/components/shared/three/ui/CombatReadinessBar.js.map +1 -0
- package/lib/components/shared/three/ui/ComboCounter.d.ts +42 -0
- package/lib/components/shared/three/ui/ComboCounter.d.ts.map +1 -0
- package/lib/components/shared/three/ui/ComboCounter.js +222 -0
- package/lib/components/shared/three/ui/ComboCounter.js.map +1 -0
- package/lib/components/shared/three/ui/HealthBar.d.ts +37 -0
- package/lib/components/shared/three/ui/HealthBar.d.ts.map +1 -0
- package/lib/components/shared/three/ui/HealthBar.js +112 -0
- package/lib/components/shared/three/ui/HealthBar.js.map +1 -0
- package/lib/components/shared/three/ui/KoreanButton.d.ts +37 -0
- package/lib/components/shared/three/ui/KoreanButton.d.ts.map +1 -0
- package/lib/components/shared/three/ui/KoreanButton.js +33 -0
- package/lib/components/shared/three/ui/KoreanButton.js.map +1 -0
- package/lib/components/shared/three/ui/KoreanPanel.d.ts +32 -0
- package/lib/components/shared/three/ui/KoreanPanel.d.ts.map +1 -0
- package/lib/components/shared/three/ui/KoreanPanel.js +29 -0
- package/lib/components/shared/three/ui/KoreanPanel.js.map +1 -0
- package/lib/components/shared/three/ui/KoreanText.d.ts +35 -0
- package/lib/components/shared/three/ui/KoreanText.d.ts.map +1 -0
- package/lib/components/shared/three/ui/KoreanText.js +32 -0
- package/lib/components/shared/three/ui/KoreanText.js.map +1 -0
- package/lib/components/shared/three/ui/MenuList.d.ts +47 -0
- package/lib/components/shared/three/ui/MenuList.d.ts.map +1 -0
- package/lib/components/shared/three/ui/MenuList.js +123 -0
- package/lib/components/shared/three/ui/MenuList.js.map +1 -0
- package/lib/components/shared/three/ui/PlayerHUD.d.ts +34 -0
- package/lib/components/shared/three/ui/PlayerHUD.d.ts.map +1 -0
- package/lib/components/shared/three/ui/PlayerHUD.js +231 -0
- package/lib/components/shared/three/ui/PlayerHUD.js.map +1 -0
- package/lib/components/shared/three/ui/ProgressBar.d.ts +48 -0
- package/lib/components/shared/three/ui/ProgressBar.d.ts.map +1 -0
- package/lib/components/shared/three/ui/ProgressBar.js +173 -0
- package/lib/components/shared/three/ui/ProgressBar.js.map +1 -0
- package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts +62 -0
- package/lib/components/shared/three/ui/SpeedIndicatorHUD.d.ts.map +1 -0
- package/lib/components/shared/three/ui/SpeedIndicatorHUD.js +185 -0
- package/lib/components/shared/three/ui/SpeedIndicatorHUD.js.map +1 -0
- package/lib/components/shared/three/ui/StaminaBar.d.ts +37 -0
- package/lib/components/shared/three/ui/StaminaBar.d.ts.map +1 -0
- package/lib/components/shared/three/ui/StaminaBar.js +103 -0
- package/lib/components/shared/three/ui/StaminaBar.js.map +1 -0
- package/lib/components/shared/three/ui/TechniqueBar.d.ts +52 -0
- package/lib/components/shared/three/ui/TechniqueBar.d.ts.map +1 -0
- package/lib/components/shared/three/ui/TechniqueBar.js +128 -0
- package/lib/components/shared/three/ui/TechniqueBar.js.map +1 -0
- package/lib/components/shared/three/ui/TechniqueBarContainer.d.ts +49 -0
- package/lib/components/shared/three/ui/TechniqueBarContainer.d.ts.map +1 -0
- package/lib/components/shared/three/ui/TechniqueCard.d.ts +64 -0
- package/lib/components/shared/three/ui/TechniqueCard.d.ts.map +1 -0
- package/lib/components/shared/three/ui/TechniqueCard.js +333 -0
- package/lib/components/shared/three/ui/TechniqueCard.js.map +1 -0
- package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.d.ts +76 -0
- package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.d.ts.map +1 -0
- package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js +551 -0
- package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js.map +1 -0
- package/lib/components/shared/three/ui/VulnerabilityWindowHUD.d.ts +63 -0
- package/lib/components/shared/three/ui/VulnerabilityWindowHUD.d.ts.map +1 -0
- package/lib/components/shared/ui/BackButton.d.ts +82 -0
- package/lib/components/shared/ui/BackButton.d.ts.map +1 -0
- package/lib/components/shared/ui/BackButton.js +67 -0
- package/lib/components/shared/ui/BackButton.js.map +1 -0
- package/lib/components/shared/ui/BaseHUDContainer.d.ts +71 -0
- package/lib/components/shared/ui/BaseHUDContainer.d.ts.map +1 -0
- package/lib/components/shared/ui/BaseHUDContainer.js +126 -0
- package/lib/components/shared/ui/BaseHUDContainer.js.map +1 -0
- package/lib/components/shared/ui/CombatTimer.d.ts +60 -0
- package/lib/components/shared/ui/CombatTimer.d.ts.map +1 -0
- package/lib/components/shared/ui/CombatTimer.js +145 -0
- package/lib/components/shared/ui/CombatTimer.js.map +1 -0
- package/lib/components/shared/ui/ErrorBoundary.d.ts +44 -0
- package/lib/components/shared/ui/ErrorBoundary.d.ts.map +1 -0
- package/lib/components/shared/ui/ErrorModal.d.ts +21 -0
- package/lib/components/shared/ui/ErrorModal.d.ts.map +1 -0
- package/lib/components/shared/ui/ErrorModal.js +133 -0
- package/lib/components/shared/ui/ErrorModal.js.map +1 -0
- package/lib/components/shared/ui/HUDSection.d.ts +65 -0
- package/lib/components/shared/ui/HUDSection.d.ts.map +1 -0
- package/lib/components/shared/ui/LoadingState.d.ts +50 -0
- package/lib/components/shared/ui/LoadingState.d.ts.map +1 -0
- package/lib/components/shared/ui/LoadingState.js +92 -0
- package/lib/components/shared/ui/LoadingState.js.map +1 -0
- package/lib/components/shared/ui/MobileHUDLayout.d.ts +70 -0
- package/lib/components/shared/ui/MobileHUDLayout.d.ts.map +1 -0
- package/lib/components/shared/ui/ResponsiveContainer.d.ts +69 -0
- package/lib/components/shared/ui/ResponsiveContainer.d.ts.map +1 -0
- package/lib/components/shared/ui/SplashScreen.d.ts +13 -0
- package/lib/components/shared/ui/SplashScreen.d.ts.map +1 -0
- package/lib/components/shared/ui/SplashScreen.js +204 -0
- package/lib/components/shared/ui/SplashScreen.js.map +1 -0
- package/lib/components/shared/ui/StyledHUDPanel.d.ts +56 -0
- package/lib/components/shared/ui/StyledHUDPanel.d.ts.map +1 -0
- package/lib/components/shared/ui/VitalPointOverlayControlsPure.d.ts +79 -0
- package/lib/components/shared/ui/VitalPointOverlayControlsPure.d.ts.map +1 -0
- package/lib/components/shared/ui/VitalPointOverlayControlsPure.js +550 -0
- package/lib/components/shared/ui/VitalPointOverlayControlsPure.js.map +1 -0
- package/lib/components/shared/ui/VolumeControl.d.ts +20 -0
- package/lib/components/shared/ui/VolumeControl.d.ts.map +1 -0
- package/lib/components/shared/ui/VolumeControl.js +292 -0
- package/lib/components/shared/ui/VolumeControl.js.map +1 -0
- package/lib/components/shared/ui/shared/ConfirmDialog.d.ts +29 -0
- package/lib/components/shared/ui/shared/ConfirmDialog.d.ts.map +1 -0
- package/lib/components/shared/ui/shared/ConfirmDialog.js +149 -0
- package/lib/components/shared/ui/shared/ConfirmDialog.js.map +1 -0
- package/lib/components/test/Hello3D.d.ts +36 -0
- package/lib/components/test/Hello3D.d.ts.map +1 -0
- package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.d.ts +63 -0
- package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.d.ts.map +1 -0
- package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js +179 -0
- package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js.map +1 -0
- package/lib/components/ui/combat/ComboCounter.d.ts +85 -0
- package/lib/components/ui/combat/ComboCounter.d.ts.map +1 -0
- package/lib/components/ui/combat/PressureMeter.d.ts +60 -0
- package/lib/components/ui/combat/PressureMeter.d.ts.map +1 -0
- package/lib/components/ui/combat/index.d.ts +8 -0
- package/lib/components/ui/combat/index.d.ts.map +1 -0
- package/lib/constants/bodyDimensions.d.ts +241 -0
- package/lib/constants/bodyDimensions.d.ts.map +1 -0
- package/lib/constants/bodyDimensions.js +213 -0
- package/lib/constants/bodyDimensions.js.map +1 -0
- package/lib/constants/bodyRenderingConstants.d.ts +295 -0
- package/lib/constants/bodyRenderingConstants.d.ts.map +1 -0
- package/lib/constants/bodyRenderingConstants.js +128 -0
- package/lib/constants/bodyRenderingConstants.js.map +1 -0
- package/lib/data/archetypeClothing.d.ts +40 -0
- package/lib/data/archetypeClothing.d.ts.map +1 -0
- package/lib/data/archetypeClothing.js +584 -0
- package/lib/data/archetypeClothing.js.map +1 -0
- package/lib/data/archetypePhysicalAttributes.d.ts +279 -0
- package/lib/data/archetypePhysicalAttributes.d.ts.map +1 -0
- package/lib/data/archetypePhysicalAttributes.js +227 -0
- package/lib/data/archetypePhysicalAttributes.js.map +1 -0
- package/lib/data/techniqueMappings.d.ts +64 -0
- package/lib/data/techniqueMappings.d.ts.map +1 -0
- package/lib/data/techniqueMappings.js +56 -0
- package/lib/data/techniqueMappings.js.map +1 -0
- package/lib/data/techniques.d.ts +84 -0
- package/lib/data/techniques.d.ts.map +1 -0
- package/lib/data/techniques.js +739 -0
- package/lib/data/techniques.js.map +1 -0
- package/lib/hooks/useActionFeedback.d.ts +114 -0
- package/lib/hooks/useActionFeedback.d.ts.map +1 -0
- package/lib/hooks/useActionFeedback.js +158 -0
- package/lib/hooks/useActionFeedback.js.map +1 -0
- package/lib/hooks/useBalanceAnimations.d.ts +62 -0
- package/lib/hooks/useBalanceAnimations.d.ts.map +1 -0
- package/lib/hooks/useBalanceAnimations.js +133 -0
- package/lib/hooks/useBalanceAnimations.js.map +1 -0
- package/lib/hooks/useCombatTimer.d.ts +77 -0
- package/lib/hooks/useCombatTimer.d.ts.map +1 -0
- package/lib/hooks/useCombatTimer.js +139 -0
- package/lib/hooks/useCombatTimer.js.map +1 -0
- package/lib/hooks/useDebounce.d.ts +30 -0
- package/lib/hooks/useDebounce.d.ts.map +1 -0
- package/lib/hooks/useHUDLayout.d.ts +67 -0
- package/lib/hooks/useHUDLayout.d.ts.map +1 -0
- package/lib/hooks/useHUDLayout.js +92 -0
- package/lib/hooks/useHUDLayout.js.map +1 -0
- package/lib/hooks/useHandPoseTransitions.d.ts +65 -0
- package/lib/hooks/useHandPoseTransitions.d.ts.map +1 -0
- package/lib/hooks/useHandPoseTransitions.js +127 -0
- package/lib/hooks/useHandPoseTransitions.js.map +1 -0
- package/lib/hooks/useKeyboardControls.d.ts +73 -0
- package/lib/hooks/useKeyboardControls.d.ts.map +1 -0
- package/lib/hooks/useKeyboardControls.js +311 -0
- package/lib/hooks/useKeyboardControls.js.map +1 -0
- package/lib/hooks/useMatchCountdown.d.ts +87 -0
- package/lib/hooks/useMatchCountdown.d.ts.map +1 -0
- package/lib/hooks/useMatchCountdown.js +162 -0
- package/lib/hooks/useMatchCountdown.js.map +1 -0
- package/lib/hooks/useMuscleActivation.d.ts +76 -0
- package/lib/hooks/useMuscleActivation.d.ts.map +1 -0
- package/lib/hooks/useMuscleActivation.js +99 -0
- package/lib/hooks/useMuscleActivation.js.map +1 -0
- package/lib/hooks/usePauseMenu.d.ts +32 -0
- package/lib/hooks/usePauseMenu.d.ts.map +1 -0
- package/lib/hooks/usePlayerAnimation.d.ts +188 -0
- package/lib/hooks/usePlayerAnimation.d.ts.map +1 -0
- package/lib/hooks/usePlayerAnimation.js +145 -0
- package/lib/hooks/usePlayerAnimation.js.map +1 -0
- package/lib/hooks/useResponsiveLayout.d.ts +184 -0
- package/lib/hooks/useResponsiveLayout.d.ts.map +1 -0
- package/lib/hooks/useRoundTransition.d.ts +87 -0
- package/lib/hooks/useRoundTransition.d.ts.map +1 -0
- package/lib/hooks/useRoundTransition.js +158 -0
- package/lib/hooks/useRoundTransition.js.map +1 -0
- package/lib/hooks/useSkeletalAnimation.d.ts +88 -0
- package/lib/hooks/useSkeletalAnimation.d.ts.map +1 -0
- package/lib/hooks/useSkeletalAnimation.js +176 -0
- package/lib/hooks/useSkeletalAnimation.js.map +1 -0
- package/lib/hooks/useTechniqueSelection.d.ts +73 -0
- package/lib/hooks/useTechniqueSelection.d.ts.map +1 -0
- package/lib/hooks/useTechniqueSelection.js +190 -0
- package/lib/hooks/useTechniqueSelection.js.map +1 -0
- package/lib/hooks/useThrottle.d.ts +30 -0
- package/lib/hooks/useThrottle.d.ts.map +1 -0
- package/lib/hooks/useThrottle.js +61 -0
- package/lib/hooks/useThrottle.js.map +1 -0
- package/lib/hooks/useTouchControls.d.ts +107 -0
- package/lib/hooks/useTouchControls.d.ts.map +1 -0
- package/lib/hooks/useTouchControls.js +260 -0
- package/lib/hooks/useTouchControls.js.map +1 -0
- package/lib/hooks/useWebGLContextLossHandler.d.ts +77 -0
- package/lib/hooks/useWebGLContextLossHandler.d.ts.map +1 -0
- package/lib/hooks/useWebGLContextLossHandler.js +119 -0
- package/lib/hooks/useWebGLContextLossHandler.js.map +1 -0
- package/lib/hooks/useWindowSize.d.ts +60 -0
- package/lib/hooks/useWindowSize.d.ts.map +1 -0
- package/lib/hooks/useWindowSize.js +62 -0
- package/lib/hooks/useWindowSize.js.map +1 -0
- package/lib/index.d.ts +21 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +114 -0
- package/lib/systems/CombatSystem.d.ts +348 -0
- package/lib/systems/CombatSystem.d.ts.map +1 -0
- package/lib/systems/CombatSystem.js +877 -0
- package/lib/systems/CombatSystem.js.map +1 -0
- package/lib/systems/EffectCalculator.d.ts +176 -0
- package/lib/systems/EffectCalculator.d.ts.map +1 -0
- package/lib/systems/EffectCalculator.js +251 -0
- package/lib/systems/EffectCalculator.js.map +1 -0
- package/lib/systems/LayoutSystem.d.ts +250 -0
- package/lib/systems/LayoutSystem.d.ts.map +1 -0
- package/lib/systems/LayoutSystem.js +337 -0
- package/lib/systems/LayoutSystem.js.map +1 -0
- package/lib/systems/PlayerEffectManager.d.ts +210 -0
- package/lib/systems/PlayerEffectManager.d.ts.map +1 -0
- package/lib/systems/PlayerEffectManager.js +178 -0
- package/lib/systems/PlayerEffectManager.js.map +1 -0
- package/lib/systems/ResponsiveScaling.d.ts +298 -0
- package/lib/systems/ResponsiveScaling.d.ts.map +1 -0
- package/lib/systems/ResponsiveScaling.js +376 -0
- package/lib/systems/ResponsiveScaling.js.map +1 -0
- package/lib/systems/TrigramSystem.d.ts +388 -0
- package/lib/systems/TrigramSystem.d.ts.map +1 -0
- package/lib/systems/TrigramSystem.js +512 -0
- package/lib/systems/TrigramSystem.js.map +1 -0
- package/lib/systems/VitalPointSystem.d.ts +330 -0
- package/lib/systems/VitalPointSystem.d.ts.map +1 -0
- package/lib/systems/VitalPointSystem.js +455 -0
- package/lib/systems/VitalPointSystem.js.map +1 -0
- package/lib/systems/ai/AIPersonality.d.ts +133 -0
- package/lib/systems/ai/AIPersonality.d.ts.map +1 -0
- package/lib/systems/ai/AIPersonality.js +245 -0
- package/lib/systems/ai/AIPersonality.js.map +1 -0
- package/lib/systems/ai/AdaptiveDifficulty.d.ts +159 -0
- package/lib/systems/ai/AdaptiveDifficulty.d.ts.map +1 -0
- package/lib/systems/ai/AdaptiveDifficulty.js +297 -0
- package/lib/systems/ai/AdaptiveDifficulty.js.map +1 -0
- package/lib/systems/ai/ArchetypeEnforcer.d.ts +132 -0
- package/lib/systems/ai/ArchetypeEnforcer.d.ts.map +1 -0
- package/lib/systems/ai/ArchetypeEnforcer.js +279 -0
- package/lib/systems/ai/ArchetypeEnforcer.js.map +1 -0
- package/lib/systems/ai/ComboSystem.d.ts +136 -0
- package/lib/systems/ai/ComboSystem.d.ts.map +1 -0
- package/lib/systems/ai/ComboSystem.js +384 -0
- package/lib/systems/ai/ComboSystem.js.map +1 -0
- package/lib/systems/ai/DecisionTree.d.ts +563 -0
- package/lib/systems/ai/DecisionTree.d.ts.map +1 -0
- package/lib/systems/ai/DecisionTree.js +1516 -0
- package/lib/systems/ai/DecisionTree.js.map +1 -0
- package/lib/systems/ai/TrainingAI.d.ts +132 -0
- package/lib/systems/ai/TrainingAI.d.ts.map +1 -0
- package/lib/systems/ai/TrainingAI.js +265 -0
- package/lib/systems/ai/TrainingAI.js.map +1 -0
- package/lib/systems/ai/__tests__/AI-Performance.bench.d.ts +19 -0
- package/lib/systems/ai/__tests__/AI-Performance.bench.d.ts.map +1 -0
- package/lib/systems/ai/index.d.ts +12 -0
- package/lib/systems/ai/index.d.ts.map +1 -0
- package/lib/systems/ai/index.js +7 -0
- package/lib/systems/ai/types.d.ts +111 -0
- package/lib/systems/ai/types.d.ts.map +1 -0
- package/lib/systems/ai/types.js +24 -0
- package/lib/systems/ai/types.js.map +1 -0
- package/lib/systems/animation/AnimationCategory.d.ts +64 -0
- package/lib/systems/animation/AnimationCategory.d.ts.map +1 -0
- package/lib/systems/animation/builders/AnimationBuilder.d.ts +288 -0
- package/lib/systems/animation/builders/AnimationBuilder.d.ts.map +1 -0
- package/lib/systems/animation/builders/AnimationBuilder.js +261 -0
- package/lib/systems/animation/builders/AnimationBuilder.js.map +1 -0
- package/lib/systems/animation/builders/AnimationFactoryPresets.d.ts +280 -0
- package/lib/systems/animation/builders/AnimationFactoryPresets.d.ts.map +1 -0
- package/lib/systems/animation/builders/AnimationFactoryPresets.js +234 -0
- package/lib/systems/animation/builders/AnimationFactoryPresets.js.map +1 -0
- package/lib/systems/animation/builders/HandPoseApplicator.d.ts +56 -0
- package/lib/systems/animation/builders/HandPoseApplicator.d.ts.map +1 -0
- package/lib/systems/animation/builders/HandPoseApplicator.js +130 -0
- package/lib/systems/animation/builders/HandPoseApplicator.js.map +1 -0
- package/lib/systems/animation/builders/HandPoses.d.ts +186 -0
- package/lib/systems/animation/builders/HandPoses.d.ts.map +1 -0
- package/lib/systems/animation/builders/HandPoses.js +509 -0
- package/lib/systems/animation/builders/HandPoses.js.map +1 -0
- package/lib/systems/animation/builders/KeyframeConfig.d.ts +207 -0
- package/lib/systems/animation/builders/KeyframeConfig.d.ts.map +1 -0
- package/lib/systems/animation/builders/KeyframeConfig.js +264 -0
- package/lib/systems/animation/builders/KeyframeConfig.js.map +1 -0
- package/lib/systems/animation/builders/KeyframeInterpolation.d.ts +491 -0
- package/lib/systems/animation/builders/KeyframeInterpolation.d.ts.map +1 -0
- package/lib/systems/animation/builders/KeyframeInterpolation.js +252 -0
- package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -0
- package/lib/systems/animation/builders/KickPhaseApplicator.d.ts +119 -0
- package/lib/systems/animation/builders/KickPhaseApplicator.d.ts.map +1 -0
- package/lib/systems/animation/builders/KickPhaseApplicator.js +119 -0
- package/lib/systems/animation/builders/KickPhaseApplicator.js.map +1 -0
- package/lib/systems/animation/builders/KoreanGuardPositions.d.ts +208 -0
- package/lib/systems/animation/builders/KoreanGuardPositions.d.ts.map +1 -0
- package/lib/systems/animation/builders/KoreanGuardPositions.js +267 -0
- package/lib/systems/animation/builders/KoreanGuardPositions.js.map +1 -0
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.d.ts +1310 -0
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.d.ts.map +1 -0
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js +2857 -0
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js.map +1 -0
- package/lib/systems/animation/builders/MartialArtsConstants.d.ts +1034 -0
- package/lib/systems/animation/builders/MartialArtsConstants.d.ts.map +1 -0
- package/lib/systems/animation/builders/MartialArtsConstants.js +1644 -0
- package/lib/systems/animation/builders/MartialArtsConstants.js.map +1 -0
- package/lib/systems/animation/builders/MartialPoseApplicator.d.ts +54 -0
- package/lib/systems/animation/builders/MartialPoseApplicator.d.ts.map +1 -0
- package/lib/systems/animation/builders/MartialPoseApplicator.js +54 -0
- package/lib/systems/animation/builders/MartialPoseApplicator.js.map +1 -0
- package/lib/systems/animation/builders/PunchPhaseApplicator.d.ts +73 -0
- package/lib/systems/animation/builders/PunchPhaseApplicator.d.ts.map +1 -0
- package/lib/systems/animation/builders/PunchPhaseApplicator.js +68 -0
- package/lib/systems/animation/builders/PunchPhaseApplicator.js.map +1 -0
- package/lib/systems/animation/builders/SkeletonRig.d.ts +321 -0
- package/lib/systems/animation/builders/SkeletonRig.d.ts.map +1 -0
- package/lib/systems/animation/builders/SkeletonRig.js +330 -0
- package/lib/systems/animation/builders/SkeletonRig.js.map +1 -0
- package/lib/systems/animation/builders/TrigramGuardApplicator.d.ts +99 -0
- package/lib/systems/animation/builders/TrigramGuardApplicator.d.ts.map +1 -0
- package/lib/systems/animation/builders/TrigramGuardApplicator.js +185 -0
- package/lib/systems/animation/builders/TrigramGuardApplicator.js.map +1 -0
- package/lib/systems/animation/builders/index.d.ts +23 -0
- package/lib/systems/animation/builders/index.d.ts.map +1 -0
- package/lib/systems/animation/builders/index.js +13 -0
- package/lib/systems/animation/catalogs/AttackAnimations.d.ts +523 -0
- package/lib/systems/animation/catalogs/AttackAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/AttackAnimations.js +537 -0
- package/lib/systems/animation/catalogs/AttackAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/BasicAnimations.d.ts +84 -0
- package/lib/systems/animation/catalogs/BasicAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/BasicAnimations.js +92 -0
- package/lib/systems/animation/catalogs/BasicAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/ComboAnimations.d.ts +370 -0
- package/lib/systems/animation/catalogs/ComboAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/ComboAnimations.js +400 -0
- package/lib/systems/animation/catalogs/ComboAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/DarkOpsAnimations.d.ts +301 -0
- package/lib/systems/animation/catalogs/DarkOpsAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/DarkOpsAnimations.js +322 -0
- package/lib/systems/animation/catalogs/DarkOpsAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/DefensiveAnimations.d.ts +134 -0
- package/lib/systems/animation/catalogs/DefensiveAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/DefensiveAnimations.js +142 -0
- package/lib/systems/animation/catalogs/DefensiveAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/ElbowKneeAnimations.d.ts +437 -0
- package/lib/systems/animation/catalogs/ElbowKneeAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/ElbowKneeAnimations.js +452 -0
- package/lib/systems/animation/catalogs/ElbowKneeAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/EnhancedAttackAnimations.d.ts +146 -0
- package/lib/systems/animation/catalogs/EnhancedAttackAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/EnhancedAttackAnimations.js +100 -0
- package/lib/systems/animation/catalogs/EnhancedAttackAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.d.ts +81 -0
- package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.js +94 -0
- package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.d.ts +268 -0
- package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.js +196 -0
- package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GamRedirectionAnimations.d.ts +64 -0
- package/lib/systems/animation/catalogs/GamRedirectionAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/GamRedirectionAnimations.js +68 -0
- package/lib/systems/animation/catalogs/GamRedirectionAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GamStanceAnimations.d.ts +111 -0
- package/lib/systems/animation/catalogs/GamStanceAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/GamStanceAnimations.js +9 -0
- package/lib/systems/animation/catalogs/GamStanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GamTechniqueAnimations.d.ts +82 -0
- package/lib/systems/animation/catalogs/GamTechniqueAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/GamTechniqueAnimations.js +55 -0
- package/lib/systems/animation/catalogs/GamTechniqueAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GanStanceAnimations.d.ts +122 -0
- package/lib/systems/animation/catalogs/GanStanceAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/GanStanceAnimations.js +135 -0
- package/lib/systems/animation/catalogs/GanStanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GanTechniqueAnimations.d.ts +78 -0
- package/lib/systems/animation/catalogs/GanTechniqueAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/GanTechniqueAnimations.js +83 -0
- package/lib/systems/animation/catalogs/GanTechniqueAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GeonStanceAnimations.d.ts +323 -0
- package/lib/systems/animation/catalogs/GeonStanceAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/GeonStanceAnimations.js +341 -0
- package/lib/systems/animation/catalogs/GeonStanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GonGuardPoses.d.ts +84 -0
- package/lib/systems/animation/catalogs/GonGuardPoses.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/GonGuardPoses.js +6 -0
- package/lib/systems/animation/catalogs/GonGuardPoses.js.map +1 -0
- package/lib/systems/animation/catalogs/GonStanceAnimations.d.ts +134 -0
- package/lib/systems/animation/catalogs/GonStanceAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/GonStanceAnimations.js +9 -0
- package/lib/systems/animation/catalogs/GonStanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.d.ts +265 -0
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.js +13 -0
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GrapplingAnimations.d.ts +452 -0
- package/lib/systems/animation/catalogs/GrapplingAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/GrapplingAnimations.js +475 -0
- package/lib/systems/animation/catalogs/GrapplingAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/JinStanceAnimations.d.ts +98 -0
- package/lib/systems/animation/catalogs/JinStanceAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/JinStanceAnimations.js +111 -0
- package/lib/systems/animation/catalogs/JinStanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/JinTechniqueAnimations.d.ts +80 -0
- package/lib/systems/animation/catalogs/JinTechniqueAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/JinTechniqueAnimations.js +89 -0
- package/lib/systems/animation/catalogs/JinTechniqueAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/KickAnimations.d.ts +916 -0
- package/lib/systems/animation/catalogs/KickAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/KickAnimations.js +929 -0
- package/lib/systems/animation/catalogs/KickAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/LiStanceAnimations.d.ts +140 -0
- package/lib/systems/animation/catalogs/LiStanceAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/LiStanceAnimations.js +122 -0
- package/lib/systems/animation/catalogs/LiStanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/LiTechniqueAnimations.d.ts +104 -0
- package/lib/systems/animation/catalogs/LiTechniqueAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/LiTechniqueAnimations.js +90 -0
- package/lib/systems/animation/catalogs/LiTechniqueAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/MovementAnimations.d.ts +344 -0
- package/lib/systems/animation/catalogs/MovementAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/MovementAnimations.js +371 -0
- package/lib/systems/animation/catalogs/MovementAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/PunchAnimations.d.ts +496 -0
- package/lib/systems/animation/catalogs/PunchAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/PunchAnimations.js +498 -0
- package/lib/systems/animation/catalogs/PunchAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts +184 -0
- package/lib/systems/animation/catalogs/RecoveryAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/RecoveryAnimations.js +465 -0
- package/lib/systems/animation/catalogs/RecoveryAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/SonStanceAnimations.d.ts +149 -0
- package/lib/systems/animation/catalogs/SonStanceAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/SonStanceAnimations.js +131 -0
- package/lib/systems/animation/catalogs/SonStanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/SonTechniqueAnimations.d.ts +90 -0
- package/lib/systems/animation/catalogs/SonTechniqueAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/SonTechniqueAnimations.js +95 -0
- package/lib/systems/animation/catalogs/SonTechniqueAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/SpecializedPunchAnimations.d.ts +178 -0
- package/lib/systems/animation/catalogs/SpecializedPunchAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/SpecializedPunchAnimations.js +188 -0
- package/lib/systems/animation/catalogs/SpecializedPunchAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/StanceAnimations.d.ts +687 -0
- package/lib/systems/animation/catalogs/StanceAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/StanceAnimations.js +840 -0
- package/lib/systems/animation/catalogs/StanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/StanceAttackAnimations.d.ts +483 -0
- package/lib/systems/animation/catalogs/StanceAttackAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/StanceAttackAnimations.js +2369 -0
- package/lib/systems/animation/catalogs/StanceAttackAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/StanceGuardPoses.d.ts +327 -0
- package/lib/systems/animation/catalogs/StanceGuardPoses.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/StanceGuardPoses.js +655 -0
- package/lib/systems/animation/catalogs/StanceGuardPoses.js.map +1 -0
- package/lib/systems/animation/catalogs/StanceIdleAnimations.d.ts +255 -0
- package/lib/systems/animation/catalogs/StanceIdleAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/StanceIdleAnimations.js +446 -0
- package/lib/systems/animation/catalogs/StanceIdleAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/StanceLocomotionAnimations.d.ts +207 -0
- package/lib/systems/animation/catalogs/StanceLocomotionAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/StanceLocomotionAnimations.js +309 -0
- package/lib/systems/animation/catalogs/StanceLocomotionAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/StepAnimations.d.ts +274 -0
- package/lib/systems/animation/catalogs/StepAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/StepAnimations.js +73 -0
- package/lib/systems/animation/catalogs/StepAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/StepSkeletalAnimations.d.ts +100 -0
- package/lib/systems/animation/catalogs/StepSkeletalAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/StepSkeletalAnimations.js +99 -0
- package/lib/systems/animation/catalogs/StepSkeletalAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/TaeJointLockAnimations.d.ts +170 -0
- package/lib/systems/animation/catalogs/TaeJointLockAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/TaeJointLockAnimations.js +141 -0
- package/lib/systems/animation/catalogs/TaeJointLockAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/TaeStanceAnimations.d.ts +120 -0
- package/lib/systems/animation/catalogs/TaeStanceAnimations.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/TaeStanceAnimations.js +139 -0
- package/lib/systems/animation/catalogs/TaeStanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/index.d.ts +43 -0
- package/lib/systems/animation/catalogs/index.d.ts.map +1 -0
- package/lib/systems/animation/catalogs/index.js +36 -0
- package/lib/systems/animation/constants/AnatomicalLimits.d.ts +234 -0
- package/lib/systems/animation/constants/AnatomicalLimits.d.ts.map +1 -0
- package/lib/systems/animation/constants/AnatomicalLimits.js +61 -0
- package/lib/systems/animation/constants/AnatomicalLimits.js.map +1 -0
- package/lib/systems/animation/constants/index.d.ts +13 -0
- package/lib/systems/animation/constants/index.d.ts.map +1 -0
- package/lib/systems/animation/core/AnimationHitTiming.d.ts +184 -0
- package/lib/systems/animation/core/AnimationHitTiming.d.ts.map +1 -0
- package/lib/systems/animation/core/AnimationHitTiming.js +766 -0
- package/lib/systems/animation/core/AnimationHitTiming.js.map +1 -0
- package/lib/systems/animation/core/AnimationOptimizations.d.ts +221 -0
- package/lib/systems/animation/core/AnimationOptimizations.d.ts.map +1 -0
- package/lib/systems/animation/core/AnimationOptimizations.js +322 -0
- package/lib/systems/animation/core/AnimationOptimizations.js.map +1 -0
- package/lib/systems/animation/core/AnimationPriority.d.ts +391 -0
- package/lib/systems/animation/core/AnimationPriority.d.ts.map +1 -0
- package/lib/systems/animation/core/AnimationPriority.js +349 -0
- package/lib/systems/animation/core/AnimationPriority.js.map +1 -0
- package/lib/systems/animation/core/AnimationRegistry.d.ts +220 -0
- package/lib/systems/animation/core/AnimationRegistry.d.ts.map +1 -0
- package/lib/systems/animation/core/AnimationRegistry.js +416 -0
- package/lib/systems/animation/core/AnimationRegistry.js.map +1 -0
- package/lib/systems/animation/core/AnimationStateMachine.d.ts +701 -0
- package/lib/systems/animation/core/AnimationStateMachine.d.ts.map +1 -0
- package/lib/systems/animation/core/AnimationStateMachine.js +1458 -0
- package/lib/systems/animation/core/AnimationStateMachine.js.map +1 -0
- package/lib/systems/animation/core/AnimationTransitions.d.ts +275 -0
- package/lib/systems/animation/core/AnimationTransitions.d.ts.map +1 -0
- package/lib/systems/animation/core/AnimationTransitions.js +920 -0
- package/lib/systems/animation/core/AnimationTransitions.js.map +1 -0
- package/lib/systems/animation/core/LateralityTransform.d.ts +120 -0
- package/lib/systems/animation/core/LateralityTransform.d.ts.map +1 -0
- package/lib/systems/animation/core/LateralityTransform.js +204 -0
- package/lib/systems/animation/core/LateralityTransform.js.map +1 -0
- package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts +171 -0
- package/lib/systems/animation/core/RecoveryPhaseEnhancer.d.ts.map +1 -0
- package/lib/systems/animation/core/RecoveryPhaseEnhancer.js +122 -0
- package/lib/systems/animation/core/RecoveryPhaseEnhancer.js.map +1 -0
- package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts +303 -0
- package/lib/systems/animation/core/TechniqueAnimationMapper.d.ts.map +1 -0
- package/lib/systems/animation/core/TechniqueAnimationMapper.js +770 -0
- package/lib/systems/animation/core/TechniqueAnimationMapper.js.map +1 -0
- package/lib/systems/animation/core/TechniqueAnimationMapping.d.ts +74 -0
- package/lib/systems/animation/core/TechniqueAnimationMapping.d.ts.map +1 -0
- package/lib/systems/animation/core/TechniqueAnimationMapping.js +1313 -0
- package/lib/systems/animation/core/TechniqueAnimationMapping.js.map +1 -0
- package/lib/systems/animation/core/TrigramAnimationMapping.d.ts +286 -0
- package/lib/systems/animation/core/TrigramAnimationMapping.d.ts.map +1 -0
- package/lib/systems/animation/core/TrigramAnimationMapping.js +6 -0
- package/lib/systems/animation/core/TrigramStanceTransitions.d.ts +186 -0
- package/lib/systems/animation/core/TrigramStanceTransitions.d.ts.map +1 -0
- package/lib/systems/animation/core/TrigramStanceTransitions.js +8 -0
- package/lib/systems/animation/core/TrigramStanceTransitions.js.map +1 -0
- package/lib/systems/animation/core/index.d.ts +23 -0
- package/lib/systems/animation/core/index.d.ts.map +1 -0
- package/lib/systems/animation/core/index.js +16 -0
- package/lib/systems/animation/core/types.d.ts +1360 -0
- package/lib/systems/animation/core/types.d.ts.map +1 -0
- package/lib/systems/animation/core/types.js +539 -0
- package/lib/systems/animation/core/types.js.map +1 -0
- package/lib/systems/animation/index.d.ts +16 -0
- package/lib/systems/animation/index.d.ts.map +1 -0
- package/lib/systems/animation/index.js +63 -0
- package/lib/systems/animation/systems/AdvancedJointMovements.d.ts +614 -0
- package/lib/systems/animation/systems/AdvancedJointMovements.d.ts.map +1 -0
- package/lib/systems/animation/systems/AdvancedJointMovements.js +95 -0
- package/lib/systems/animation/systems/AdvancedJointMovements.js.map +1 -0
- package/lib/systems/animation/systems/BodyFacingSystem.d.ts +331 -0
- package/lib/systems/animation/systems/BodyFacingSystem.d.ts.map +1 -0
- package/lib/systems/animation/systems/BodyFacingSystem.js +327 -0
- package/lib/systems/animation/systems/BodyFacingSystem.js.map +1 -0
- package/lib/systems/animation/systems/FacialExpressions.d.ts +167 -0
- package/lib/systems/animation/systems/FacialExpressions.d.ts.map +1 -0
- package/lib/systems/animation/systems/FacialExpressions.js +76 -0
- package/lib/systems/animation/systems/FacialExpressions.js.map +1 -0
- package/lib/systems/animation/systems/FallAnimations.d.ts +174 -0
- package/lib/systems/animation/systems/FallAnimations.d.ts.map +1 -0
- package/lib/systems/animation/systems/FallAnimations.js +104 -0
- package/lib/systems/animation/systems/FallAnimations.js.map +1 -0
- package/lib/systems/animation/systems/HeadMovements.d.ts +152 -0
- package/lib/systems/animation/systems/HeadMovements.d.ts.map +1 -0
- package/lib/systems/animation/systems/HeadMovements.js +2 -0
- package/lib/systems/animation/systems/MuscleActivation.d.ts +163 -0
- package/lib/systems/animation/systems/MuscleActivation.d.ts.map +1 -0
- package/lib/systems/animation/systems/MuscleActivation.js +427 -0
- package/lib/systems/animation/systems/MuscleActivation.js.map +1 -0
- package/lib/systems/animation/systems/RecoveryVisualization.d.ts +142 -0
- package/lib/systems/animation/systems/RecoveryVisualization.d.ts.map +1 -0
- package/lib/systems/animation/systems/RecoveryVisualization.js +1 -0
- package/lib/systems/animation/systems/index.d.ts +17 -0
- package/lib/systems/animation/systems/index.d.ts.map +1 -0
- package/lib/systems/animation/systems/index.js +7 -0
- package/lib/systems/animation/utils/AnimationMirror.d.ts +157 -0
- package/lib/systems/animation/utils/AnimationMirror.d.ts.map +1 -0
- package/lib/systems/animation/utils/AnimationMirror.js +30 -0
- package/lib/systems/animation/utils/AnimationMirror.js.map +1 -0
- package/lib/systems/audio/BoneImpactAudioSystem.d.ts +182 -0
- package/lib/systems/audio/BoneImpactAudioSystem.d.ts.map +1 -0
- package/lib/systems/audio/index.d.ts +7 -0
- package/lib/systems/audio/index.d.ts.map +1 -0
- package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts +149 -0
- package/lib/systems/bodypart/BodyPartDamageIntegration.d.ts.map +1 -0
- package/lib/systems/bodypart/BodyPartDamageIntegration.js +38 -0
- package/lib/systems/bodypart/BodyPartDamageIntegration.js.map +1 -0
- package/lib/systems/bodypart/BodyPartHealthSystem.d.ts +233 -0
- package/lib/systems/bodypart/BodyPartHealthSystem.d.ts.map +1 -0
- package/lib/systems/bodypart/BodyPartHealthSystem.js +476 -0
- package/lib/systems/bodypart/BodyPartHealthSystem.js.map +1 -0
- package/lib/systems/bodypart/BodyPartPositionMapping.d.ts +116 -0
- package/lib/systems/bodypart/BodyPartPositionMapping.d.ts.map +1 -0
- package/lib/systems/bodypart/BodyPartPositionMapping.js +122 -0
- package/lib/systems/bodypart/BodyPartPositionMapping.js.map +1 -0
- package/lib/systems/bodypart/CombatInjuryIntegration.d.ts +191 -0
- package/lib/systems/bodypart/CombatInjuryIntegration.d.ts.map +1 -0
- package/lib/systems/bodypart/CombatInjuryIntegration.js +169 -0
- package/lib/systems/bodypart/CombatInjuryIntegration.js.map +1 -0
- package/lib/systems/bodypart/InjuryIntegration.d.ts +39 -0
- package/lib/systems/bodypart/InjuryIntegration.d.ts.map +1 -0
- package/lib/systems/bodypart/InjuryTracker.d.ts +256 -0
- package/lib/systems/bodypart/InjuryTracker.d.ts.map +1 -0
- package/lib/systems/bodypart/InjuryTracker.js +240 -0
- package/lib/systems/bodypart/InjuryTracker.js.map +1 -0
- package/lib/systems/bodypart/MovementPenaltySystem.d.ts +191 -0
- package/lib/systems/bodypart/MovementPenaltySystem.d.ts.map +1 -0
- package/lib/systems/bodypart/MovementPenaltySystem.js +255 -0
- package/lib/systems/bodypart/MovementPenaltySystem.js.map +1 -0
- package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts +137 -0
- package/lib/systems/bodypart/PlayerInjuryTrackingManager.d.ts.map +1 -0
- package/lib/systems/bodypart/PlayerInjuryTrackingManager.js +175 -0
- package/lib/systems/bodypart/PlayerInjuryTrackingManager.js.map +1 -0
- package/lib/systems/bodypart/index.d.ts +22 -0
- package/lib/systems/bodypart/index.d.ts.map +1 -0
- package/lib/systems/bodypart/index.js +8 -0
- package/lib/systems/bodypart/types.d.ts +453 -0
- package/lib/systems/bodypart/types.d.ts.map +1 -0
- package/lib/systems/bodypart/types.js +157 -0
- package/lib/systems/bodypart/types.js.map +1 -0
- package/lib/systems/breathing/BreathingDisruptionSystem.d.ts +289 -0
- package/lib/systems/breathing/BreathingDisruptionSystem.d.ts.map +1 -0
- package/lib/systems/breathing/BreathingDisruptionSystem.js +388 -0
- package/lib/systems/breathing/BreathingDisruptionSystem.js.map +1 -0
- package/lib/systems/breathing/feedback.d.ts +131 -0
- package/lib/systems/breathing/feedback.d.ts.map +1 -0
- package/lib/systems/breathing/feedback.js +80 -0
- package/lib/systems/breathing/feedback.js.map +1 -0
- package/lib/systems/breathing/index.d.ts +12 -0
- package/lib/systems/breathing/index.d.ts.map +1 -0
- package/lib/systems/breathing/index.js +3 -0
- package/lib/systems/breathing/integration.d.ts +140 -0
- package/lib/systems/breathing/integration.d.ts.map +1 -0
- package/lib/systems/breathing/integration.js +194 -0
- package/lib/systems/breathing/integration.js.map +1 -0
- package/lib/systems/combat/AICounterAttackIntegration.d.ts +223 -0
- package/lib/systems/combat/AICounterAttackIntegration.d.ts.map +1 -0
- package/lib/systems/combat/BalanceSystem.d.ts +667 -0
- package/lib/systems/combat/BalanceSystem.d.ts.map +1 -0
- package/lib/systems/combat/BalanceSystem.js +811 -0
- package/lib/systems/combat/BalanceSystem.js.map +1 -0
- package/lib/systems/combat/BreakingStatusEffects.d.ts +96 -0
- package/lib/systems/combat/BreakingStatusEffects.d.ts.map +1 -0
- package/lib/systems/combat/BreakingStatusEffects.js +60 -0
- package/lib/systems/combat/BreakingStatusEffects.js.map +1 -0
- package/lib/systems/combat/CombatStateSystem.d.ts +264 -0
- package/lib/systems/combat/CombatStateSystem.d.ts.map +1 -0
- package/lib/systems/combat/CombatStateSystem.js +353 -0
- package/lib/systems/combat/CombatStateSystem.js.map +1 -0
- package/lib/systems/combat/ConsciousnessSystem.d.ts +402 -0
- package/lib/systems/combat/ConsciousnessSystem.d.ts.map +1 -0
- package/lib/systems/combat/ConsciousnessSystem.js +529 -0
- package/lib/systems/combat/ConsciousnessSystem.js.map +1 -0
- package/lib/systems/combat/FallIntegration.d.ts +82 -0
- package/lib/systems/combat/FallIntegration.d.ts.map +1 -0
- package/lib/systems/combat/FallIntegration.js +100 -0
- package/lib/systems/combat/FallIntegration.js.map +1 -0
- package/lib/systems/combat/GrappleSystem.d.ts +264 -0
- package/lib/systems/combat/GrappleSystem.d.ts.map +1 -0
- package/lib/systems/combat/GrappleSystem.js +393 -0
- package/lib/systems/combat/GrappleSystem.js.map +1 -0
- package/lib/systems/combat/LimbExposureSystem.d.ts +150 -0
- package/lib/systems/combat/LimbExposureSystem.d.ts.map +1 -0
- package/lib/systems/combat/LimbExposureSystem.js +308 -0
- package/lib/systems/combat/LimbExposureSystem.js.map +1 -0
- package/lib/systems/combat/PainResponseSystem.d.ts +299 -0
- package/lib/systems/combat/PainResponseSystem.d.ts.map +1 -0
- package/lib/systems/combat/PainResponseSystem.js +401 -0
- package/lib/systems/combat/PainResponseSystem.js.map +1 -0
- package/lib/systems/combat/SlowMotionController.d.ts +123 -0
- package/lib/systems/combat/SlowMotionController.d.ts.map +1 -0
- package/lib/systems/combat/TrainingCombatSystem.d.ts +89 -0
- package/lib/systems/combat/TrainingCombatSystem.d.ts.map +1 -0
- package/lib/systems/combat/TrainingCombatSystem.js +224 -0
- package/lib/systems/combat/TrainingCombatSystem.js.map +1 -0
- package/lib/systems/combat/index.d.ts +16 -0
- package/lib/systems/combat/index.d.ts.map +1 -0
- package/lib/systems/combat/index.js +10 -0
- package/lib/systems/combat/painConsciousnessUtils.d.ts +147 -0
- package/lib/systems/combat/painConsciousnessUtils.d.ts.map +1 -0
- package/lib/systems/combat/painConsciousnessUtils.js +185 -0
- package/lib/systems/combat/painConsciousnessUtils.js.map +1 -0
- package/lib/systems/combat/typeGuards.d.ts +25 -0
- package/lib/systems/combat/typeGuards.d.ts.map +1 -0
- package/lib/systems/combat/typeGuards.js +39 -0
- package/lib/systems/combat/typeGuards.js.map +1 -0
- package/lib/systems/combat/types.d.ts +197 -0
- package/lib/systems/combat/types.d.ts.map +1 -0
- package/lib/systems/effects.d.ts +40 -0
- package/lib/systems/effects.d.ts.map +1 -0
- package/lib/systems/effects.js +44 -0
- package/lib/systems/effects.js.map +1 -0
- package/lib/systems/game.d.ts +77 -0
- package/lib/systems/game.d.ts.map +1 -0
- package/lib/systems/game.js +20 -0
- package/lib/systems/game.js.map +1 -0
- package/lib/systems/index.d.ts +24 -0
- package/lib/systems/index.d.ts.map +1 -0
- package/lib/systems/index.js +281 -0
- package/lib/systems/index.js.map +1 -0
- package/lib/systems/movement/InjuryMovementModifier.d.ts +275 -0
- package/lib/systems/movement/InjuryMovementModifier.d.ts.map +1 -0
- package/lib/systems/movement/InjuryMovementModifier.js +281 -0
- package/lib/systems/movement/InjuryMovementModifier.js.map +1 -0
- package/lib/systems/movement/helpers/AccelerationUpdater.d.ts +61 -0
- package/lib/systems/movement/helpers/AccelerationUpdater.d.ts.map +1 -0
- package/lib/systems/movement/helpers/AccelerationUpdater.js +75 -0
- package/lib/systems/movement/helpers/AccelerationUpdater.js.map +1 -0
- package/lib/systems/movement/helpers/accelerationUtils.d.ts +85 -0
- package/lib/systems/movement/helpers/accelerationUtils.d.ts.map +1 -0
- package/lib/systems/movement/helpers/accelerationUtils.js +86 -0
- package/lib/systems/movement/helpers/accelerationUtils.js.map +1 -0
- package/lib/systems/movement/index.d.ts +16 -0
- package/lib/systems/movement/index.d.ts.map +1 -0
- package/lib/systems/movement/integration.d.ts +91 -0
- package/lib/systems/movement/integration.d.ts.map +1 -0
- package/lib/systems/physics/AttackMovementPhysics.d.ts +283 -0
- package/lib/systems/physics/AttackMovementPhysics.d.ts.map +1 -0
- package/lib/systems/physics/AttackMovementPhysics.js +272 -0
- package/lib/systems/physics/AttackMovementPhysics.js.map +1 -0
- package/lib/systems/physics/CollisionDetection.d.ts +323 -0
- package/lib/systems/physics/CollisionDetection.d.ts.map +1 -0
- package/lib/systems/physics/CollisionDetection.js +543 -0
- package/lib/systems/physics/CollisionDetection.js.map +1 -0
- package/lib/systems/physics/CoordinateMapper.d.ts +203 -0
- package/lib/systems/physics/CoordinateMapper.d.ts.map +1 -0
- package/lib/systems/physics/CoordinateMapper.js +242 -0
- package/lib/systems/physics/CoordinateMapper.js.map +1 -0
- package/lib/systems/physics/KnockbackPhysics.d.ts +367 -0
- package/lib/systems/physics/KnockbackPhysics.d.ts.map +1 -0
- package/lib/systems/physics/KnockbackPhysics.js +338 -0
- package/lib/systems/physics/KnockbackPhysics.js.map +1 -0
- package/lib/systems/physics/MovementPhysics.d.ts +428 -0
- package/lib/systems/physics/MovementPhysics.d.ts.map +1 -0
- package/lib/systems/physics/MovementPhysics.js +488 -0
- package/lib/systems/physics/MovementPhysics.js.map +1 -0
- package/lib/systems/physics/PhysicalReachCalculator.d.ts +261 -0
- package/lib/systems/physics/PhysicalReachCalculator.d.ts.map +1 -0
- package/lib/systems/physics/PhysicalReachCalculator.js +226 -0
- package/lib/systems/physics/PhysicalReachCalculator.js.map +1 -0
- package/lib/systems/physics/SpeedModifierSystem.d.ts +302 -0
- package/lib/systems/physics/SpeedModifierSystem.d.ts.map +1 -0
- package/lib/systems/physics/SpeedModifierSystem.js +301 -0
- package/lib/systems/physics/SpeedModifierSystem.js.map +1 -0
- package/lib/systems/physics/__tests__/PhysicsPerformance.bench.d.ts +16 -0
- package/lib/systems/physics/__tests__/PhysicsPerformance.bench.d.ts.map +1 -0
- package/lib/systems/physics/index.d.ts +21 -0
- package/lib/systems/physics/index.d.ts.map +1 -0
- package/lib/systems/physics/index.js +7 -0
- package/lib/systems/player.d.ts +386 -0
- package/lib/systems/player.d.ts.map +1 -0
- package/lib/systems/trigram/KoreanCulture.d.ts +127 -0
- package/lib/systems/trigram/KoreanCulture.d.ts.map +1 -0
- package/lib/systems/trigram/KoreanCulture.js +194 -0
- package/lib/systems/trigram/KoreanCulture.js.map +1 -0
- package/lib/systems/trigram/KoreanTechniques.d.ts +59 -0
- package/lib/systems/trigram/KoreanTechniques.d.ts.map +1 -0
- package/lib/systems/trigram/KoreanTechniques.js +140 -0
- package/lib/systems/trigram/KoreanTechniques.js.map +1 -0
- package/lib/systems/trigram/StanceManager.d.ts +90 -0
- package/lib/systems/trigram/StanceManager.d.ts.map +1 -0
- package/lib/systems/trigram/StanceManager.js +192 -0
- package/lib/systems/trigram/StanceManager.js.map +1 -0
- package/lib/systems/trigram/TransitionCalculator.d.ts +132 -0
- package/lib/systems/trigram/TransitionCalculator.d.ts.map +1 -0
- package/lib/systems/trigram/TransitionCalculator.js +233 -0
- package/lib/systems/trigram/TransitionCalculator.js.map +1 -0
- package/lib/systems/trigram/TrigramCalculator.d.ts +63 -0
- package/lib/systems/trigram/TrigramCalculator.d.ts.map +1 -0
- package/lib/systems/trigram/TrigramCalculator.js +148 -0
- package/lib/systems/trigram/TrigramCalculator.js.map +1 -0
- package/lib/systems/trigram/index.d.ts +12 -0
- package/lib/systems/trigram/index.d.ts.map +1 -0
- package/lib/systems/trigram/index.js +17 -0
- package/lib/systems/trigram/techniques/DarkOpsTechniques.d.ts +118 -0
- package/lib/systems/trigram/techniques/DarkOpsTechniques.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/DarkOpsTechniques.js +683 -0
- package/lib/systems/trigram/techniques/DarkOpsTechniques.js.map +1 -0
- package/lib/systems/trigram/techniques/GamTechniques.d.ts +44 -0
- package/lib/systems/trigram/techniques/GamTechniques.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/GamTechniques.js +293 -0
- package/lib/systems/trigram/techniques/GamTechniques.js.map +1 -0
- package/lib/systems/trigram/techniques/GanTechniques.d.ts +58 -0
- package/lib/systems/trigram/techniques/GanTechniques.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/GanTechniques.js +323 -0
- package/lib/systems/trigram/techniques/GanTechniques.js.map +1 -0
- package/lib/systems/trigram/techniques/GeonTechniques.d.ts +23 -0
- package/lib/systems/trigram/techniques/GeonTechniques.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/GeonTechniques.js +299 -0
- package/lib/systems/trigram/techniques/GeonTechniques.js.map +1 -0
- package/lib/systems/trigram/techniques/GonTechniques.d.ts +51 -0
- package/lib/systems/trigram/techniques/GonTechniques.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/GonTechniques.js +399 -0
- package/lib/systems/trigram/techniques/GonTechniques.js.map +1 -0
- package/lib/systems/trigram/techniques/JinTechniques.d.ts +23 -0
- package/lib/systems/trigram/techniques/JinTechniques.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/JinTechniques.js +253 -0
- package/lib/systems/trigram/techniques/JinTechniques.js.map +1 -0
- package/lib/systems/trigram/techniques/LiTechniques.d.ts +23 -0
- package/lib/systems/trigram/techniques/LiTechniques.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/LiTechniques.js +253 -0
- package/lib/systems/trigram/techniques/LiTechniques.js.map +1 -0
- package/lib/systems/trigram/techniques/SonTechniques.d.ts +43 -0
- package/lib/systems/trigram/techniques/SonTechniques.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/SonTechniques.js +293 -0
- package/lib/systems/trigram/techniques/SonTechniques.js.map +1 -0
- package/lib/systems/trigram/techniques/TaeTechniques.d.ts +23 -0
- package/lib/systems/trigram/techniques/TaeTechniques.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/TaeTechniques.js +292 -0
- package/lib/systems/trigram/techniques/TaeTechniques.js.map +1 -0
- package/lib/systems/trigram/techniques/TechniqueConfig.d.ts +403 -0
- package/lib/systems/trigram/techniques/TechniqueConfig.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/TechniqueConfig.js +493 -0
- package/lib/systems/trigram/techniques/TechniqueConfig.js.map +1 -0
- package/lib/systems/trigram/techniques/index.d.ts +54 -0
- package/lib/systems/trigram/techniques/index.d.ts.map +1 -0
- package/lib/systems/trigram/techniques/index.js +88 -0
- package/lib/systems/trigram/techniques/index.js.map +1 -0
- package/lib/systems/trigram/types/GonTechniqueExtensions.d.ts +506 -0
- package/lib/systems/trigram/types/GonTechniqueExtensions.d.ts.map +1 -0
- package/lib/systems/trigram/types/GonTechniqueExtensions.js +37 -0
- package/lib/systems/trigram/types/GonTechniqueExtensions.js.map +1 -0
- package/lib/systems/trigram/types.d.ts +288 -0
- package/lib/systems/trigram/types.d.ts.map +1 -0
- package/lib/systems/trigram/types.js +459 -0
- package/lib/systems/trigram/types.js.map +1 -0
- package/lib/systems/types.d.ts +1038 -0
- package/lib/systems/types.d.ts.map +1 -0
- package/lib/systems/types.js +872 -0
- package/lib/systems/types.js.map +1 -0
- package/lib/systems/vitalpoint/DamageCalculator.d.ts +255 -0
- package/lib/systems/vitalpoint/DamageCalculator.d.ts.map +1 -0
- package/lib/systems/vitalpoint/DamageCalculator.js +435 -0
- package/lib/systems/vitalpoint/DamageCalculator.js.map +1 -0
- package/lib/systems/vitalpoint/HitDetection.d.ts +11 -0
- package/lib/systems/vitalpoint/HitDetection.d.ts.map +1 -0
- package/lib/systems/vitalpoint/HitDetection.js +69 -0
- package/lib/systems/vitalpoint/HitDetection.js.map +1 -0
- package/lib/systems/vitalpoint/KoreanAnatomy.d.ts +361 -0
- package/lib/systems/vitalpoint/KoreanAnatomy.d.ts.map +1 -0
- package/lib/systems/vitalpoint/KoreanAnatomy.js +1709 -0
- package/lib/systems/vitalpoint/KoreanAnatomy.js.map +1 -0
- package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts +133 -0
- package/lib/systems/vitalpoint/KoreanVitalPoints.d.ts.map +1 -0
- package/lib/systems/vitalpoint/KoreanVitalPoints.js +150 -0
- package/lib/systems/vitalpoint/KoreanVitalPoints.js.map +1 -0
- package/lib/systems/vitalpoint/MeridianVitalPointMapping.d.ts +92 -0
- package/lib/systems/vitalpoint/MeridianVitalPointMapping.d.ts.map +1 -0
- package/lib/systems/vitalpoint/MeridianVitalPointMapping.js +227 -0
- package/lib/systems/vitalpoint/MeridianVitalPointMapping.js.map +1 -0
- package/lib/systems/vitalpoint/VitalPointsData.d.ts +51 -0
- package/lib/systems/vitalpoint/VitalPointsData.d.ts.map +1 -0
- package/lib/systems/vitalpoint/VitalPointsData.js +1917 -0
- package/lib/systems/vitalpoint/VitalPointsData.js.map +1 -0
- package/lib/systems/vitalpoint/index.d.ts +12 -0
- package/lib/systems/vitalpoint/index.d.ts.map +1 -0
- package/lib/systems/vitalpoint/index.js +5 -0
- package/lib/systems/vitalpoint/types.d.ts +417 -0
- package/lib/systems/vitalpoint/types.d.ts.map +1 -0
- package/lib/test/test-utils.d.ts +46 -0
- package/lib/test/test-utils.d.ts.map +1 -0
- package/lib/types/AccessibilityTypes.d.ts +232 -0
- package/lib/types/AccessibilityTypes.d.ts.map +1 -0
- package/lib/types/AccessibilityTypes.js +13 -0
- package/lib/types/AccessibilityTypes.js.map +1 -0
- package/lib/types/HtmlOverlayTypes.d.ts +161 -0
- package/lib/types/HtmlOverlayTypes.d.ts.map +1 -0
- package/lib/types/LayoutTypes.d.ts +330 -0
- package/lib/types/LayoutTypes.d.ts.map +1 -0
- package/lib/types/LayoutTypes.js +118 -0
- package/lib/types/LayoutTypes.js.map +1 -0
- package/lib/types/PhysicsTypes.d.ts +327 -0
- package/lib/types/PhysicsTypes.d.ts.map +1 -0
- package/lib/types/PhysicsTypes.js +105 -0
- package/lib/types/PhysicsTypes.js.map +1 -0
- package/lib/types/ResponsiveTypes.d.ts +210 -0
- package/lib/types/ResponsiveTypes.d.ts.map +1 -0
- package/lib/types/clothing.d.ts +298 -0
- package/lib/types/clothing.d.ts.map +1 -0
- package/lib/types/common.d.ts +1247 -0
- package/lib/types/common.d.ts.map +1 -0
- package/lib/types/common.js +622 -0
- package/lib/types/common.js.map +1 -0
- package/lib/types/constants/animations.d.ts +93 -0
- package/lib/types/constants/animations.d.ts.map +1 -0
- package/lib/types/constants/animations.js +26 -0
- package/lib/types/constants/animations.js.map +1 -0
- package/lib/types/constants/colors.d.ts +151 -0
- package/lib/types/constants/colors.d.ts.map +1 -0
- package/lib/types/constants/colors.js +155 -0
- package/lib/types/constants/colors.js.map +1 -0
- package/lib/types/constants/designSystem.d.ts +469 -0
- package/lib/types/constants/designSystem.d.ts.map +1 -0
- package/lib/types/constants/designSystem.js +406 -0
- package/lib/types/constants/designSystem.js.map +1 -0
- package/lib/types/constants/index.d.ts +181 -0
- package/lib/types/constants/index.d.ts.map +1 -0
- package/lib/types/constants/index.js +176 -0
- package/lib/types/constants/index.js.map +1 -0
- package/lib/types/constants/layout.d.ts +76 -0
- package/lib/types/constants/layout.d.ts.map +1 -0
- package/lib/types/constants/layout.js +37 -0
- package/lib/types/constants/layout.js.map +1 -0
- package/lib/types/constants/performance.d.ts +183 -0
- package/lib/types/constants/performance.d.ts.map +1 -0
- package/lib/types/constants/performance.js +134 -0
- package/lib/types/constants/performance.js.map +1 -0
- package/lib/types/constants/typography.d.ts +85 -0
- package/lib/types/constants/typography.d.ts.map +1 -0
- package/lib/types/constants/typography.js +110 -0
- package/lib/types/constants/typography.js.map +1 -0
- package/lib/types/constants/ui.d.ts +187 -0
- package/lib/types/constants/ui.d.ts.map +1 -0
- package/lib/types/constants/ui.js +113 -0
- package/lib/types/constants/ui.js.map +1 -0
- package/lib/types/facial.d.ts +266 -0
- package/lib/types/facial.d.ts.map +1 -0
- package/lib/types/facial.js +92 -0
- package/lib/types/facial.js.map +1 -0
- package/lib/types/hand-animation.d.ts +370 -0
- package/lib/types/hand-animation.d.ts.map +1 -0
- package/lib/types/hand-animation.js +55 -0
- package/lib/types/hand-animation.js.map +1 -0
- package/lib/types/index.d.ts +14 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +112 -0
- package/lib/types/index.js.map +1 -0
- package/lib/types/injury.d.ts +58 -0
- package/lib/types/injury.d.ts.map +1 -0
- package/lib/types/injury.js +23 -0
- package/lib/types/injury.js.map +1 -0
- package/lib/types/muscle.d.ts +146 -0
- package/lib/types/muscle.d.ts.map +1 -0
- package/lib/types/muscle.js +22 -0
- package/lib/types/muscle.js.map +1 -0
- package/lib/types/physics.d.ts +606 -0
- package/lib/types/physics.d.ts.map +1 -0
- package/lib/types/physics.js +162 -0
- package/lib/types/physics.js.map +1 -0
- package/lib/types/physicsConstants.d.ts +270 -0
- package/lib/types/physicsConstants.d.ts.map +1 -0
- package/lib/types/physicsConstants.js +71 -0
- package/lib/types/physicsConstants.js.map +1 -0
- package/lib/types/player-visual.d.ts +299 -0
- package/lib/types/player-visual.d.ts.map +1 -0
- package/lib/types/skeletal.d.ts +693 -0
- package/lib/types/skeletal.d.ts.map +1 -0
- package/lib/types/skeletal.js +189 -0
- package/lib/types/skeletal.js.map +1 -0
- package/lib/types/technique.d.ts +175 -0
- package/lib/types/technique.d.ts.map +1 -0
- package/lib/types/techniqueId.d.ts +51 -0
- package/lib/types/techniqueId.d.ts.map +1 -0
- package/lib/types/techniqueId.js +55 -0
- package/lib/types/techniqueId.js.map +1 -0
- package/lib/utils/EventManager.d.ts +133 -0
- package/lib/utils/EventManager.d.ts.map +1 -0
- package/lib/utils/EventManager.js +1 -0
- package/lib/utils/accessibility.d.ts +218 -0
- package/lib/utils/accessibility.d.ts.map +1 -0
- package/lib/utils/accessibility.js +167 -0
- package/lib/utils/accessibility.js.map +1 -0
- package/lib/utils/arenaWorldDimensions.d.ts +219 -0
- package/lib/utils/arenaWorldDimensions.d.ts.map +1 -0
- package/lib/utils/arenaWorldDimensions.js +154 -0
- package/lib/utils/arenaWorldDimensions.js.map +1 -0
- package/lib/utils/assetConfig.d.ts +39 -0
- package/lib/utils/assetConfig.d.ts.map +1 -0
- package/lib/utils/assetConfig.js +52 -0
- package/lib/utils/assetConfig.js.map +1 -0
- package/lib/utils/cameraShake.d.ts +115 -0
- package/lib/utils/cameraShake.d.ts.map +1 -0
- package/lib/utils/characterScaling.d.ts +305 -0
- package/lib/utils/characterScaling.d.ts.map +1 -0
- package/lib/utils/characterScaling.js +105 -0
- package/lib/utils/characterScaling.js.map +1 -0
- package/lib/utils/clothingColors.d.ts +120 -0
- package/lib/utils/clothingColors.d.ts.map +1 -0
- package/lib/utils/clothingMaterials.d.ts +65 -0
- package/lib/utils/clothingMaterials.d.ts.map +1 -0
- package/lib/utils/colorHelpers.d.ts +67 -0
- package/lib/utils/colorHelpers.d.ts.map +1 -0
- package/lib/utils/colorHelpers.js +81 -0
- package/lib/utils/colorHelpers.js.map +1 -0
- package/lib/utils/colorUtils.d.ts +113 -0
- package/lib/utils/colorUtils.d.ts.map +1 -0
- package/lib/utils/colorUtils.js +225 -0
- package/lib/utils/colorUtils.js.map +1 -0
- package/lib/utils/combatReadiness.d.ts +132 -0
- package/lib/utils/combatReadiness.d.ts.map +1 -0
- package/lib/utils/combatReadiness.js +176 -0
- package/lib/utils/combatReadiness.js.map +1 -0
- package/lib/utils/controlMapping.d.ts +171 -0
- package/lib/utils/controlMapping.d.ts.map +1 -0
- package/lib/utils/controlMapping.js +288 -0
- package/lib/utils/controlMapping.js.map +1 -0
- package/lib/utils/deviceDetection.d.ts +159 -0
- package/lib/utils/deviceDetection.d.ts.map +1 -0
- package/lib/utils/deviceDetection.js +337 -0
- package/lib/utils/deviceDetection.js.map +1 -0
- package/lib/utils/effectUtils.d.ts +63 -0
- package/lib/utils/effectUtils.d.ts.map +1 -0
- package/lib/utils/effectUtils.js +737 -0
- package/lib/utils/effectUtils.js.map +1 -0
- package/lib/utils/eventConstants.d.ts +25 -0
- package/lib/utils/eventConstants.d.ts.map +1 -0
- package/lib/utils/eventConstants.js +3 -0
- package/lib/utils/eventConstants.js.map +1 -0
- package/lib/utils/fabricTextures.d.ts +136 -0
- package/lib/utils/fabricTextures.d.ts.map +1 -0
- package/lib/utils/fabricTextures.js +301 -0
- package/lib/utils/fabricTextures.js.map +1 -0
- package/lib/utils/hapticFeedback.d.ts +224 -0
- package/lib/utils/hapticFeedback.d.ts.map +1 -0
- package/lib/utils/hapticFeedback.js +143 -0
- package/lib/utils/hapticFeedback.js.map +1 -0
- package/lib/utils/haptics.d.ts +139 -0
- package/lib/utils/haptics.d.ts.map +1 -0
- package/lib/utils/haptics.js +66 -0
- package/lib/utils/haptics.js.map +1 -0
- package/lib/utils/htmlOverlayHelpers.d.ts +168 -0
- package/lib/utils/htmlOverlayHelpers.d.ts.map +1 -0
- package/lib/utils/htmlOverlayHelpers.js +279 -0
- package/lib/utils/htmlOverlayHelpers.js.map +1 -0
- package/lib/utils/index.d.ts +15 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +92 -0
- package/lib/utils/index.js.map +1 -0
- package/lib/utils/inputSystem.d.ts +154 -0
- package/lib/utils/inputSystem.d.ts.map +1 -0
- package/lib/utils/inputSystem.js +324 -0
- package/lib/utils/inputSystem.js.map +1 -0
- package/lib/utils/koreanThemeHelpers.d.ts +328 -0
- package/lib/utils/koreanThemeHelpers.d.ts.map +1 -0
- package/lib/utils/koreanThemeHelpers.js +348 -0
- package/lib/utils/koreanThemeHelpers.js.map +1 -0
- package/lib/utils/math.d.ts +80 -0
- package/lib/utils/math.d.ts.map +1 -0
- package/lib/utils/math.js +70 -0
- package/lib/utils/math.js.map +1 -0
- package/lib/utils/mobileLayoutHelpers.d.ts +52 -0
- package/lib/utils/mobileLayoutHelpers.d.ts.map +1 -0
- package/lib/utils/mobileLayoutHelpers.js +66 -0
- package/lib/utils/mobileLayoutHelpers.js.map +1 -0
- package/lib/utils/mobileUIUtils.d.ts +266 -0
- package/lib/utils/mobileUIUtils.d.ts.map +1 -0
- package/lib/utils/mobileUIUtils.js +33 -0
- package/lib/utils/mobileUIUtils.js.map +1 -0
- package/lib/utils/objectPool.d.ts +92 -0
- package/lib/utils/objectPool.d.ts.map +1 -0
- package/lib/utils/particlePool.d.ts +138 -0
- package/lib/utils/particlePool.d.ts.map +1 -0
- package/lib/utils/performance/PerformanceMonitor.d.ts +93 -0
- package/lib/utils/performance/PerformanceMonitor.d.ts.map +1 -0
- package/lib/utils/performance/PerformanceMonitor.js +155 -0
- package/lib/utils/performance/PerformanceMonitor.js.map +1 -0
- package/lib/utils/performance/PerformanceOverlay3D.d.ts +20 -0
- package/lib/utils/performance/PerformanceOverlay3D.d.ts.map +1 -0
- package/lib/utils/performance/PerformanceOverlay3D.js +200 -0
- package/lib/utils/performance/PerformanceOverlay3D.js.map +1 -0
- package/lib/utils/performance/index.d.ts +12 -0
- package/lib/utils/performance/index.d.ts.map +1 -0
- package/lib/utils/performance/index.js +3 -0
- package/lib/utils/performance/usePerformanceMonitor.d.ts +46 -0
- package/lib/utils/performance/usePerformanceMonitor.d.ts.map +1 -0
- package/lib/utils/performance/usePerformanceMonitor.js +71 -0
- package/lib/utils/performance/usePerformanceMonitor.js.map +1 -0
- package/lib/utils/performanceOptimization.d.ts +142 -0
- package/lib/utils/performanceOptimization.d.ts.map +1 -0
- package/lib/utils/performanceOptimization.js +27 -0
- package/lib/utils/performanceOptimization.js.map +1 -0
- package/lib/utils/physicalAttributeValidation.d.ts +197 -0
- package/lib/utils/physicalAttributeValidation.d.ts.map +1 -0
- package/lib/utils/player3DHelpers.d.ts +82 -0
- package/lib/utils/player3DHelpers.d.ts.map +1 -0
- package/lib/utils/player3DHelpers.js +176 -0
- package/lib/utils/player3DHelpers.js.map +1 -0
- package/lib/utils/playerUtils.d.ts +137 -0
- package/lib/utils/playerUtils.d.ts.map +1 -0
- package/lib/utils/playerUtils.js +296 -0
- package/lib/utils/playerUtils.js.map +1 -0
- package/lib/utils/responsiveLayout.d.ts +207 -0
- package/lib/utils/responsiveLayout.d.ts.map +1 -0
- package/lib/utils/responsiveLayout.js +114 -0
- package/lib/utils/responsiveLayout.js.map +1 -0
- package/lib/utils/responsiveLayoutHelpers.d.ts +156 -0
- package/lib/utils/responsiveLayoutHelpers.d.ts.map +1 -0
- package/lib/utils/responsiveLayoutHelpers.js +253 -0
- package/lib/utils/responsiveLayoutHelpers.js.map +1 -0
- package/lib/utils/safeAreaUtils.d.ts +133 -0
- package/lib/utils/safeAreaUtils.d.ts.map +1 -0
- package/lib/utils/safeAreaUtils.js +65 -0
- package/lib/utils/safeAreaUtils.js.map +1 -0
- package/lib/utils/sharedPhysicsConfig.d.ts +125 -0
- package/lib/utils/sharedPhysicsConfig.d.ts.map +1 -0
- package/lib/utils/sharedPhysicsConfig.js +119 -0
- package/lib/utils/sharedPhysicsConfig.js.map +1 -0
- package/lib/utils/skeletonScaling.d.ts +285 -0
- package/lib/utils/skeletonScaling.d.ts.map +1 -0
- package/lib/utils/skeletonScaling.js +46 -0
- package/lib/utils/skeletonScaling.js.map +1 -0
- package/lib/utils/stanceHelpers.d.ts +85 -0
- package/lib/utils/stanceHelpers.d.ts.map +1 -0
- package/lib/utils/stanceHelpers.js +132 -0
- package/lib/utils/stanceHelpers.js.map +1 -0
- package/lib/utils/threeObjectPool.d.ts +323 -0
- package/lib/utils/threeObjectPool.d.ts.map +1 -0
- package/lib/utils/threeObjectPool.js +345 -0
- package/lib/utils/threeObjectPool.js.map +1 -0
- package/lib/utils/visualEffects.d.ts +358 -0
- package/lib/utils/visualEffects.d.ts.map +1 -0
- package/lib/utils/visualEffects.js +423 -0
- package/lib/utils/visualEffects.js.map +1 -0
- package/package.json +222 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AttackAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/AttackAnimations.ts"],"sourcesContent":["/**\n * Korean martial arts attack animations with proper guard positions (막기자세)\n *\n * All animations implement proper Korean martial arts defensive positioning:\n * - Start from guard (준비자세)\n * - Maintain non-striking hand guard during technique (방어 유지)\n * - Return to guard after technique (복귀)\n *\n * @module systems/animation/AttackAnimations\n * @category Animation System\n * @korean 공격애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { BoneName } from \"@/types/skeletal\";\nimport { AnimationBuilder } from \"../builders/AnimationBuilder\";\nimport {\n MartialArtsAnimationBuilder,\n TECHNIQUE_TIMING,\n} from \"../builders/MartialArtsAnimationBuilder\";\n\n/**\n * Jab animation with guard (잽 - 막기자세)\n *\n * Fast straight punch with proper middle guard maintained.\n * Traditional Taekwondo 정권지르기 with defensive posture.\n *\n * Guard cycle:\n * - Start: MIDDLE_GUARD both hands (중단막기)\n * - During: MIDDLE_GUARD left hand (방어 유지)\n * - End: MIDDLE_GUARD both hands (복귀)\n *\n * Duration: 550ms (TECHNIQUE_TIMING.FAST)\n *\n * @korean 잽애니메이션\n */\nexport const JAB_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"jab\", \"잽\")\n .asAttack(TECHNIQUE_TIMING.FAST.total)\n // Start in middle guard\n .at(0.0)\n .withGuard(\"MIDDLE_GUARD\")\n .done<MartialArtsAnimationBuilder>()\n // Wind-up: right arm prepares, left maintains guard (준비)\n .at(TECHNIQUE_TIMING.FAST.chamber * 0.5)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .rotate(BoneName.SPINE_UPPER, 0, -0.15, 0)\n .withGuard(\"MIDDLE_GUARD\", \"left\")\n .done<MartialArtsAnimationBuilder>()\n // Extension: arm snaps forward (실행)\n .at(TECHNIQUE_TIMING.FAST.chamber)\n .rotate(BoneName.SHOULDER_R, -0.5, 0, 0.4)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.3)\n .rotate(BoneName.SPINE_UPPER, 0, 0.25, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.15, 0)\n .rotate(BoneName.PELVIS, 0, 0.1, 0)\n .withGuard(\"MIDDLE_GUARD\", \"left\")\n .done<MartialArtsAnimationBuilder>()\n // Full extension with peak hold (정점)\n .at(TECHNIQUE_TIMING.FAST.chamber + TECHNIQUE_TIMING.FAST.extend)\n .rotate(BoneName.SHOULDER_R, -0.7, 0, 0.5)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.05)\n .rotate(BoneName.WRIST_R, 0, 0, -0.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.25, 0)\n .rotate(BoneName.PELVIS, 0, 0.2, 0)\n .withGuard(\"MIDDLE_GUARD\", \"left\")\n .done<MartialArtsAnimationBuilder>()\n // Peak hold for impact clarity\n .at(\n TECHNIQUE_TIMING.FAST.chamber +\n TECHNIQUE_TIMING.FAST.extend +\n TECHNIQUE_TIMING.FAST.peak,\n )\n .rotate(BoneName.SHOULDER_R, -0.7, 0, 0.5)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.05)\n .rotate(BoneName.WRIST_R, 0, 0, -0.2)\n .withGuard(\"MIDDLE_GUARD\", \"left\")\n .done<MartialArtsAnimationBuilder>()\n // Retraction (회수)\n .at(\n TECHNIQUE_TIMING.FAST.chamber +\n TECHNIQUE_TIMING.FAST.extend +\n TECHNIQUE_TIMING.FAST.peak +\n TECHNIQUE_TIMING.FAST.retract,\n )\n .rotate(BoneName.SHOULDER_R, 0.1, 0, -0.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0.05, 0)\n .withGuard(\"MIDDLE_GUARD\", \"left\")\n .done<MartialArtsAnimationBuilder>()\n // Recovery: return to guard (복귀)\n .at(TECHNIQUE_TIMING.FAST.total)\n .withGuard(\"MIDDLE_GUARD\")\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.WRIST_R, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Cross punch with guard (크로스 - 막기자세)\n *\n * Power punch with proper middle guard maintained.\n * Traditional Taekwondo 역권지르기 with defensive posture.\n *\n * Guard cycle:\n * - Start: MIDDLE_GUARD both hands (중단막기)\n * - During: MIDDLE_GUARD right hand (방어 유지)\n * - End: MIDDLE_GUARD both hands (복귀)\n *\n * Duration: 600ms (TECHNIQUE_TIMING.FAST_MEDIUM)\n *\n * @korean 크로스펀치애니메이션\n */\nexport const CROSS_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"cross\", \"크로스\")\n .asAttack(TECHNIQUE_TIMING.FAST_MEDIUM.total)\n // Start in middle guard\n .at(0.0)\n .withGuard(\"MIDDLE_GUARD\")\n .done<MartialArtsAnimationBuilder>()\n // Wind-up: left arm prepares, right maintains guard (준비)\n .at(TECHNIQUE_TIMING.FAST_MEDIUM.chamber * 0.6)\n .rotate(BoneName.SHOULDER_L, 0.2, 0, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SPINE_UPPER, 0, -0.2, 0)\n .rotate(BoneName.PELVIS, 0, -0.15, 0)\n .withGuard(\"MIDDLE_GUARD\", \"right\")\n .done<MartialArtsAnimationBuilder>()\n // Hip rotation begins\n .at(TECHNIQUE_TIMING.FAST_MEDIUM.chamber)\n .rotate(BoneName.PELVIS, 0, 0.15, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0.2, 0)\n .rotate(BoneName.HIP_R, 0, 0.1, 0)\n .withGuard(\"MIDDLE_GUARD\", \"right\")\n .done<MartialArtsAnimationBuilder>()\n // Extension: arm snaps forward (실행)\n .at(\n TECHNIQUE_TIMING.FAST_MEDIUM.chamber +\n TECHNIQUE_TIMING.FAST_MEDIUM.extend * 0.5,\n )\n .rotate(BoneName.SHOULDER_L, -0.5, 0, -0.4)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.3)\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.3, 0)\n .rotate(BoneName.PELVIS, 0, 0.25, 0)\n .withGuard(\"MIDDLE_GUARD\", \"right\")\n .done<MartialArtsAnimationBuilder>()\n // Full extension (정점)\n .at(\n TECHNIQUE_TIMING.FAST_MEDIUM.chamber +\n TECHNIQUE_TIMING.FAST_MEDIUM.extend,\n )\n .rotate(BoneName.SHOULDER_L, -0.7, 0, -0.5)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.05)\n .rotate(BoneName.WRIST_L, 0, 0, 0.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0.45, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.35, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0.25, 0)\n .rotate(BoneName.PELVIS, 0, 0.3, 0)\n .withGuard(\"MIDDLE_GUARD\", \"right\")\n .done<MartialArtsAnimationBuilder>()\n // Peak hold for impact clarity\n .at(\n TECHNIQUE_TIMING.FAST_MEDIUM.chamber +\n TECHNIQUE_TIMING.FAST_MEDIUM.extend +\n TECHNIQUE_TIMING.FAST_MEDIUM.peak,\n )\n .rotate(BoneName.SHOULDER_L, -0.7, 0, -0.5)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.05)\n .rotate(BoneName.WRIST_L, 0, 0, 0.2)\n .withGuard(\"MIDDLE_GUARD\", \"right\")\n .done<MartialArtsAnimationBuilder>()\n // Retraction (회수)\n .at(\n TECHNIQUE_TIMING.FAST_MEDIUM.chamber +\n TECHNIQUE_TIMING.FAST_MEDIUM.extend +\n TECHNIQUE_TIMING.FAST_MEDIUM.peak +\n TECHNIQUE_TIMING.FAST_MEDIUM.retract,\n )\n .rotate(BoneName.SHOULDER_L, 0.1, 0, 0.2)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0.05, 0)\n .withGuard(\"MIDDLE_GUARD\", \"right\")\n .done<MartialArtsAnimationBuilder>()\n // Recovery: return to guard (복귀)\n .at(TECHNIQUE_TIMING.FAST_MEDIUM.total)\n .withGuard(\"MIDDLE_GUARD\")\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.WRIST_L, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Front kick animation (앞차기) - ENHANCED\n *\n * Traditional Taekwondo front kick with knee lift, leg extension,\n * ankle dorsiflexion, support leg adjustments, and balance recovery.\n * Hands maintain guard position throughout for face protection.\n *\n * Animation phases:\n * 1. Chamber (0.0s-0.1s): Knee lifts to waist height, hands guard face\n * 2. Extension (0.1s-0.2s): Lower leg extends forward with ankle flexion\n * 3. Impact (0.2s): Maximum extension point with dorsiflexion\n * 4. Retraction (0.2s-0.35s): Leg returns to chamber\n * 5. Set down (0.35s-0.45s): Foot returns to ground with balance recovery\n * 6. Recovery shuffle (0.45s-0.55s): Return to fighting guard\n *\n * Duration: 550ms (enhanced with recovery)\n *\n * @korean 앞차기애니메이션향상\n */\nexport const FRONT_KICK_ANIMATION = AnimationBuilder.create(\"front_kick\")\n .withKoreanName(\"앞차기\")\n .withDuration(0.55)\n .withType(\"attack\")\n // Frame 1: Chamber - knee lifts, hands protect face\n // Hip flexion ~90° lifts thigh to horizontal, knee bent tight\n .keyframe(0.1, \"ease-out\")\n .rotate(BoneName.HIP_R, 1.57, 0, 0) // 90 degrees - thigh horizontal\n .rotate(BoneName.KNEE_R, -2.0, 0, 0) // Tight chamber\n .rotate(BoneName.KNEE_L, -0.25, 0, 0) // Support leg slightly bent\n .rotate(BoneName.FOOT_L, 0, 0, 0.05) // Slight outward pivot\n .rotate(BoneName.PELVIS, -0.1, 0, 0) // Tilts slightly back for balance\n .rotate(BoneName.SPINE_LOWER, -0.05, 0, 0) // Spine counters\n // HIGH GUARD - protect face during kick\n .rotate(BoneName.SHOULDER_L, -0.9, 0.3, 0.4) // Left hand high, near temple\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6) // Tight bend\n .rotate(BoneName.SHOULDER_R, -0.9, -0.3, -0.4) // Right hand high, near temple\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6) // Tight bend\n .build()\n // Frame 2: Extension - leg snaps forward, hands stay up\n // Knee extends while hip drives forward, creating reach\n .keyframe(0.2, \"ease-out\")\n .rotate(BoneName.HIP_R, 1.7, 0, 0) // Hip drives slightly higher for reach\n .rotate(BoneName.KNEE_R, 0.1, 0, 0) // Knee fully extends\n .rotate(BoneName.FOOT_R, 0.5, 0, 0) // Ball of foot strikes (dorsiflexion)\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // Support leg bends for balance\n .rotate(BoneName.FOOT_L, 0, 0, 0.08)\n .rotate(BoneName.PELVIS, 0.15, 0, 0) // Pelvis tilts forward to drive kick\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0) // Spine drives forward\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n // Maintain high guard\n .rotate(BoneName.SHOULDER_L, -0.85, 0.25, 0.35)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .rotate(BoneName.SHOULDER_R, -0.85, -0.25, -0.35)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.7)\n .build()\n // Frame 3: Retraction to chamber, guard stays up\n .keyframe(0.35, \"ease-in\")\n .rotate(BoneName.HIP_R, 1.57, 0, 0)\n .rotate(BoneName.KNEE_R, -2.0, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0) // Foot relaxes\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0.05)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.9, 0.3, 0.4)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.9, -0.3, -0.4)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .build()\n // Frame 4: Set down, transition to fighting guard\n .keyframe(0.45, \"ease-in\")\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_R, -0.15, 0, 0) // Slight bend on landing\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0.03)\n // Transition to fighting guard\n .rotate(BoneName.SHOULDER_L, -0.7, 0.35, 0.25)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .rotate(BoneName.SHOULDER_R, -0.7, -0.35, -0.25)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.7)\n .build()\n // Frame 5: Balance recovery - fighting guard\n .keyframe(0.55, \"ease-in\")\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n // Return to standard fighting guard\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .build()\n .build();\n\n/**\n * Roundhouse kick animation (돌려차기) - ENHANCED\n *\n * Traditional Taekwondo roundhouse kick with hip rotation,\n * ankle flexion, support leg adjustments, and balance recovery.\n * Hands maintain high guard position throughout for face protection.\n *\n * Animation phases:\n * 1. Chamber (0.0s-0.1s): Knee lifts, hip begins rotation, hands guard face\n * 2. Rotation (0.1s-0.2s): Hip rotates 90 degrees\n * 3. Extension (0.2s-0.25s): Leg extends in arc with ankle flexion\n * 4. Impact (0.25s): Maximum extension with support leg adjustment\n * 5. Retraction (0.25s-0.4s): Return to chamber\n * 6. Set down (0.4s-0.5s): Foot to ground with balance recovery\n * 7. Recovery shuffle (0.5s-0.6s): Return to fighting guard\n *\n * Duration: 600ms (enhanced with recovery)\n *\n * @korean 돌려차기애니메이션향상\n */\nexport const ROUNDHOUSE_KICK_ANIMATION = AnimationBuilder.create(\n \"roundhouse_kick\",\n)\n .withKoreanName(\"돌려차기\")\n .withDuration(0.6)\n .withType(\"attack\")\n // Frame 1: Chamber with rotation start, hands protect face\n .keyframe(0.1, \"ease-out\")\n .rotate(BoneName.HIP_R, 1.2, 0, 0.8) // Right leg chambers\n .rotate(BoneName.KNEE_R, -1.5, 0, 0)\n .rotate(BoneName.PELVIS, 0, -0.5, 0) // Hips rotate\n .rotate(BoneName.SPINE_UPPER, 0, 0.3, 0) // Torso counter-rotates\n // HIGH GUARD - protect face during kick\n .rotate(BoneName.SHOULDER_L, -0.9, 0.3, 0.4)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.85, -0.25, -0.35)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.65)\n .build()\n // Frame 2: Full hip rotation, maintain guard\n .keyframe(0.2, \"ease-out\")\n .rotate(BoneName.HIP_R, 1.2, 0, 1.4)\n .rotate(BoneName.KNEE_R, -1.2, 0, 0)\n .rotate(BoneName.PELVIS, 0, -1.2, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.6, 0)\n .rotate(BoneName.SHOULDER_L, -0.85, 0.25, 0.35)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .rotate(BoneName.SHOULDER_R, -0.85, -0.25, -0.35)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.7)\n .build()\n // Frame 3: Extension and impact with ankle flexion\n .keyframe(0.25, \"linear\")\n .rotate(BoneName.HIP_R, 1.2, 0, 1.6) // Leg fully extends\n .rotate(BoneName.KNEE_R, -0.1, 0, 0)\n .rotate(BoneName.PELVIS, 0, -1.5, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.8, 0)\n .rotate(BoneName.FOOT_R, 0.4, 0, 0.3) // Foot plantar flexion\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // Support leg micro-adjustment\n .rotate(BoneName.FOOT_L, 0, 0, -0.1) // Pivot for power\n // Maintain high guard at impact\n .rotate(BoneName.SHOULDER_L, -0.85, 0.25, 0.35)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .rotate(BoneName.SHOULDER_R, -0.85, -0.25, -0.35)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.7)\n .position(BoneName.FOOT_R, 0.8, 0, 0) // Side strike\n .position(BoneName.PELVIS, 0, -0.02, 0) // Slight drop for power\n .build()\n // Frame 4: Retraction, guard remains up\n .keyframe(0.4, \"ease-in\")\n .rotate(BoneName.HIP_R, 1.2, 0, 0.8)\n .rotate(BoneName.KNEE_R, -1.5, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, -0.3, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.2, 0)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.9, 0.3, 0.4)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.9, -0.3, -0.4)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .position(BoneName.FOOT_R, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n // Frame 5: Set down, transition to fighting guard\n .keyframe(0.5, \"ease-in\")\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_R, -0.15, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0)\n // Transition to fighting guard\n .rotate(BoneName.SHOULDER_L, -0.7, 0.35, 0.25)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .rotate(BoneName.SHOULDER_R, -0.7, -0.35, -0.25)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.7)\n .position(BoneName.PELVIS, 0, -0.01, 0)\n .build()\n // Frame 6: Recovery - fighting guard\n .keyframe(0.6, \"ease-in\")\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n // Return to standard fighting guard\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Block animation (막기)\n *\n * Traditional Taekwondo block with both arms raised.\n *\n * Animation phases:\n * 1. Raise (0.0s-0.1s): Both arms lift to blocking position\n * 2. Hold (0.1s-0.3s): Maintain block\n * 3. Lower (0.3s-0.4s): Return to guard\n *\n * Duration: 400ms\n *\n * @korean 막기애니메이션\n */\nexport const BLOCK_ANIMATION = AnimationBuilder.create(\"block\")\n .withKoreanName(\"막기\")\n .withDuration(0.4)\n .withType(\"defense\")\n .keyframe(0.08, \"ease-out\")\n .rotate(BoneName.SHOULDER_L, 0, 0, -1.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, 0, 0, 1.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .rotate(BoneName.KNEE_L, -0.35, 0, 0)\n .rotate(BoneName.KNEE_R, -0.35, 0, 0)\n .build()\n .keyframe(0.27, \"linear\")\n .rotate(BoneName.SHOULDER_L, 0, 0, -1.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, 0, 0, 1.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .rotate(BoneName.KNEE_L, -0.35, 0, 0)\n .rotate(BoneName.KNEE_R, -0.35, 0, 0)\n .build()\n .keyframe(0.35, \"ease-in\")\n .rotate(BoneName.SHOULDER_L, 0, 0, 0)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.SHOULDER_R, 0, 0, 0)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .rotate(BoneName.KNEE_L, 0, 0, 0)\n .rotate(BoneName.KNEE_R, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Walking cycle animation (앞으로 걷기 - 보행 사이클)\n *\n * Natural walking gait with alternating leg movement. Includes hip swing,\n * knee bend during swing phase, foot placement, and pelvis tilt.\n *\n * Animation phases:\n * 1. Left foot forward (0.0s): Left leg extends, right leg pushes off\n * 2. Left mid-stance (0.2s): Left foot plants, right leg swings forward\n * 3. Right foot forward (0.4s): Right leg extends, left leg pushes off\n * 4. Right mid-stance (0.6s): Right foot plants, left leg swings forward\n *\n * Duration: 800ms (complete left-right step cycle)\n *\n * @korean 걷기애니메이션\n */\nexport const WALK_ANIMATION = AnimationBuilder.create(\"walk\")\n .withKoreanName(\"걷기\")\n .withDuration(0.8)\n .withType(\"movement\")\n .withLoop(true)\n .keyframe(0.0, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.1, 0.05, 0)\n .rotate(BoneName.HIP_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_L, -0.1, 0, 0)\n .rotate(BoneName.FOOT_L, 0.1, 0, 0)\n .rotate(BoneName.HIP_R, 0.4, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.FOOT_R, -0.3, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, 0)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.3)\n .rotate(BoneName.SHOULDER_R, -0.4, 0, 0)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.4)\n .rotate(BoneName.SPINE_LOWER, 0, -0.05, 0)\n .position(BoneName.PELVIS, 0, 0.02, 0)\n .build()\n .keyframe(0.2, \"linear\")\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.HIP_L, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.15, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0)\n .rotate(BoneName.HIP_R, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.8, 0, 0)\n .rotate(BoneName.FOOT_R, 0.2, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0, 0, 0)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.2)\n .rotate(BoneName.SHOULDER_R, -0.2, 0, 0)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.3)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .position(BoneName.PELVIS, 0, -0.01, 0)\n .build()\n .keyframe(0.4, \"ease-out\")\n .rotate(BoneName.PELVIS, 0.1, -0.05, 0)\n .rotate(BoneName.HIP_R, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.1, 0, 0)\n .rotate(BoneName.FOOT_R, 0.1, 0, 0)\n .rotate(BoneName.HIP_L, 0.4, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.FOOT_L, -0.3, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.3)\n .rotate(BoneName.SHOULDER_L, -0.4, 0, 0)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.4)\n .rotate(BoneName.SPINE_LOWER, 0, 0.05, 0)\n .position(BoneName.PELVIS, 0, 0.02, 0)\n .build()\n .keyframe(0.6, \"linear\")\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_R, -0.15, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.HIP_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_L, -0.8, 0, 0)\n .rotate(BoneName.FOOT_L, 0.2, 0, 0)\n .rotate(BoneName.SHOULDER_R, 0, 0, 0)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.2)\n .rotate(BoneName.SHOULDER_L, -0.2, 0, 0)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.3)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .position(BoneName.PELVIS, 0, -0.01, 0)\n .build()\n .keyframe(0.8, \"ease-in\")\n .rotate(BoneName.PELVIS, 0.1, 0.05, 0)\n .rotate(BoneName.HIP_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_L, -0.1, 0, 0)\n .rotate(BoneName.FOOT_L, 0.1, 0, 0)\n .rotate(BoneName.HIP_R, 0.4, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.FOOT_R, -0.3, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, 0)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.3)\n .rotate(BoneName.SHOULDER_R, -0.4, 0, 0)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.4)\n .rotate(BoneName.SPINE_LOWER, 0, -0.05, 0)\n .position(BoneName.PELVIS, 0, 0.02, 0)\n .build()\n .build();\n\n/**\n * Idle stance animation (대기 자세)\n *\n * Fighting stance with slight weight shift and breathing motion.\n *\n * Animation phases:\n * 1. Center (0.0s): Neutral fighting stance\n * 2. Weight left (0.8s): Shift weight to left leg\n * 3. Center (1.6s): Return to neutral\n * 4. Weight right (2.4s): Shift weight to right leg\n * 5. Center (3.0s): Return to neutral (loops)\n *\n * Duration: 3000ms (looping)\n *\n * @korean 대기자세애니메이션\n */\nexport const IDLE_STANCE_ANIMATION = AnimationBuilder.create(\"idle_stance\")\n .withKoreanName(\"대기 자세\")\n .withDuration(3.0)\n .withType(\"idle\")\n .withLoop(true)\n .keyframe(0.0, \"ease-in-out\")\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .keyframe(0.8, \"ease-in-out\")\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.15, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, -0.05)\n .rotate(BoneName.SPINE_LOWER, -0.02, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, -0.03, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.02, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .position(BoneName.PELVIS, -0.02, 0, 0)\n .build()\n .keyframe(1.6, \"ease-in-out\")\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.02, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.03, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.02, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .keyframe(2.4, \"ease-in-out\")\n .rotate(BoneName.KNEE_L, -0.15, 0, 0)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0.05)\n .rotate(BoneName.SPINE_LOWER, -0.02, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, -0.03, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.02, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .position(BoneName.PELVIS, 0.02, 0, 0)\n .build()\n .keyframe(3.0, \"ease-in-out\")\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Forward dash animation (앞으로 돌진)\n *\n * Explosive forward movement with rapid knee extension and hip drive.\n *\n * Animation phases:\n * 1. Crouch (0.0s): Deep knee bend, ready to explode\n * 2. Drive (0.15s): Rapid knee extension, forward momentum\n * 3. Glide (0.3s): Extended stride position\n * 4. Recovery (0.4s): Return to stance\n *\n * Duration: 400ms\n *\n * @korean 앞으로돌진애니메이션\n */\nexport const FORWARD_DASH_ANIMATION = AnimationBuilder.create(\"forward_dash\")\n .withKoreanName(\"앞으로 돌진\")\n .withDuration(0.4)\n .withType(\"movement\")\n .keyframe(0.0, \"ease-in\")\n .rotate(BoneName.KNEE_L, -0.8, 0, 0)\n .rotate(BoneName.KNEE_R, -0.8, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.3, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.25, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.2, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.5, 0, -0.3)\n .rotate(BoneName.SHOULDER_R, -0.5, 0, 0.3)\n .position(BoneName.PELVIS, 0, -0.15, 0)\n .build()\n .keyframe(0.15, \"ease-out\")\n .rotate(BoneName.KNEE_L, -0.1, 0, 0)\n .rotate(BoneName.KNEE_R, -0.1, 0, 0)\n .rotate(BoneName.PELVIS, 0.2, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.15, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.05, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.5)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.5)\n .position(BoneName.PELVIS, 0, 0.05, 0.8)\n .build()\n .keyframe(0.3, \"linear\")\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, -0.6)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0.6)\n .position(BoneName.PELVIS, 0, 0, 1.2)\n .build()\n .keyframe(0.4, \"ease-in\")\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Backward retreat animation (뒤로 물러서기)\n *\n * Coordinated leg backpedaling with defensive posture.\n *\n * Animation phases:\n * 1. Push back (0.0s): Back foot plants, front foot lifts\n * 2. Slide (0.2s): Smooth backward movement\n * 3. Plant (0.35s): Front foot plants\n * 4. Reset (0.45s): Return to guard stance\n *\n * Duration: 450ms\n *\n * @korean 뒤로물러서기애니메이션\n */\nexport const BACKWARD_RETREAT_ANIMATION = AnimationBuilder.create(\n \"backward_retreat\",\n)\n .withKoreanName(\"뒤로 물러서기\")\n .withDuration(0.45)\n .withType(\"movement\")\n .keyframe(0.0, \"ease-out\")\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .rotate(BoneName.HIP_L, 0.2, 0, 0)\n .rotate(BoneName.KNEE_L, -0.4, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.05, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.6, 0, -0.9)\n .rotate(BoneName.SHOULDER_R, 0.6, 0, 0.9)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .keyframe(0.2, \"linear\")\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.HIP_L, 0.1, 0, 0)\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.08, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.04, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.6, 0, -0.9)\n .rotate(BoneName.SHOULDER_R, 0.6, 0, 0.9)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .position(BoneName.PELVIS, 0, 0, -0.6)\n .build()\n .keyframe(0.35, \"ease-in\")\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.HIP_L, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .position(BoneName.PELVIS, 0, 0, -0.8)\n .build()\n .keyframe(0.45, \"ease-in\")\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Side step animation (옆으로 스텝)\n *\n * Lateral hip shift with trailing leg for quick evasion.\n *\n * Animation phases:\n * 1. Shift left (0.0s): Weight to left leg\n * 2. Slide (0.15s): Right leg follows\n * 3. Plant (0.25s): Both feet grounded\n * 4. Reset (0.3s): Return to center\n *\n * Duration: 300ms\n *\n * @korean 옆으로스텝애니메이션\n */\nexport const SIDE_STEP_ANIMATION = AnimationBuilder.create(\"side_step\")\n .withKoreanName(\"옆으로 스텝\")\n .withDuration(0.3)\n .withType(\"movement\")\n .keyframe(0.0, \"ease-out\")\n .rotate(BoneName.KNEE_L, -0.4, 0, 0)\n .rotate(BoneName.KNEE_R, -0.15, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, -0.15)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0.05)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0.08)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .position(BoneName.PELVIS, -0.3, -0.05, 0)\n .build()\n .keyframe(0.15, \"linear\")\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, -0.08)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0.03)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0.04)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .position(BoneName.PELVIS, -0.5, 0, 0)\n .build()\n .keyframe(0.25, \"ease-in\")\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .position(BoneName.PELVIS, -0.5, 0, 0)\n .build()\n .keyframe(0.3, \"ease-in\")\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.8)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Elbow strike animation (팔꿈치 타격 - Palgumchi Tagyeok)\n *\n * Close-range horizontal elbow strike from Hapkido.\n * Authentic Korean martial arts technique with proper shoulder rotation,\n * elbow positioning, and torso twist for maximum impact.\n *\n * Animation phases:\n * 1. Chamber (0.0s): Right arm chambers across body, elbow bent 90 degrees\n * 2. Rotation (0.05s): Torso rotates right, building momentum\n * 3. Strike (0.1s-0.12s): Elbow drives through target with hip rotation\n * 4. Impact (0.12s): Maximum extension with full body weight transfer\n * 5. Recovery (0.2s): Return to guard position\n *\n * Duration: 200ms (10 frames @ 60fps)\n *\n * @korean 팔꿈치타격애니메이션\n */\nexport const ELBOW_STRIKE_ANIMATION = AnimationBuilder.create(\"elbow_strike\")\n .withKoreanName(\"팔꿈치타격\")\n .withDuration(0.2)\n .withType(\"attack\")\n // Frame 1: Chamber position\n .keyframe(0.0, \"linear\")\n .rotate(BoneName.SHOULDER_R, 0, 0.8, -0.3) // Shoulder forward and across\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // 90 degree bend\n .rotate(BoneName.FOREARM_R, 0, -0.5, 0) // Forearm rotates in\n .rotate(BoneName.SPINE_UPPER, 0, -0.3, 0) // Torso winds up\n .rotate(BoneName.SPINE_MIDDLE, 0, -0.2, 0)\n .rotate(BoneName.PELVIS, 0, -0.15, 0)\n .rotate(BoneName.SHOULDER_L, 0, -0.5, 0.5) // Left arm guards\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .position(BoneName.HAND_R, -0.2, 0, 0.3) // Hand near opposite shoulder\n .build()\n // Frame 2: Rotation begins\n .keyframe(0.05, \"ease-out\")\n .rotate(BoneName.SHOULDER_R, 0, 0.5, 0)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // Maintain 90 degree bend\n .rotate(BoneName.FOREARM_R, 0, -0.3, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.1, 0) // Torso begins rotation\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.05, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.HAND_R, -0.1, 0, 0.4)\n .build()\n // Frame 3: Strike through target\n .keyframe(0.1, \"linear\")\n .rotate(BoneName.SHOULDER_R, 0, 0, 0.3) // Elbow drives forward\n .rotate(BoneName.ELBOW_R, 0, 0, 1.4) // Slightly opens for power\n .rotate(BoneName.FOREARM_R, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.5, 0.1) // Full torso rotation\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.4, 0.05)\n .rotate(BoneName.PELVIS, 0, 0.3, 0)\n .rotate(BoneName.HIP_R, 0, 0.2, 0) // Hip engagement\n .position(BoneName.ELBOW_R, 0, 0, 0.6) // Elbow extends forward\n .build()\n // Frame 4: Impact point\n .keyframe(0.12, \"linear\")\n .rotate(BoneName.SHOULDER_R, 0, 0, 0.5)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .rotate(BoneName.FOREARM_R, 0, 0.1, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.6, 0.15) // Maximum rotation\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.5, 0.1)\n .rotate(BoneName.PELVIS, 0, 0.4, 0)\n .rotate(BoneName.HIP_R, 0, 0.3, 0)\n .position(BoneName.ELBOW_R, 0, 0, 0.7)\n .position(BoneName.PELVIS, 0, 0, 0.1) // Weight shift forward\n .build()\n // Frame 5: Recovery\n .keyframe(0.2, \"ease-in\")\n .rotate(BoneName.SHOULDER_R, 0, 0, -0.1) // Return to guard\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .rotate(BoneName.FOREARM_R, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0, 0, 0.5)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .position(BoneName.ELBOW_R, 0, 0, 0)\n .position(BoneName.HAND_R, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Knee strike animation (무릎 타격 - Mureup Tagyeok)\n *\n * Close-range knee strike from Muay Thai-influenced Korean martial arts.\n * Clinch position with explosive knee drive and proper hip engagement.\n *\n * Animation phases:\n * 1. Clinch setup (0.0s): Arms position for control, weight on support leg\n * 2. Chamber (0.05s): Knee begins to lift, hip flexes\n * 3. Drive (0.1s-0.12s): Knee drives upward with hip thrust\n * 4. Impact (0.12s): Maximum extension with full body weight\n * 5. Retraction (0.15s): Knee returns to chamber\n * 6. Recovery (0.2s): Return to fighting stance\n *\n * Duration: 200ms (10 frames @ 60fps)\n *\n * @korean 무릎타격애니메이션\n */\nexport const KNEE_STRIKE_ANIMATION = AnimationBuilder.create(\"knee_strike\")\n .withKoreanName(\"무릎타격\")\n .withDuration(0.2)\n .withType(\"attack\")\n // Frame 1: Clinch setup\n .keyframe(0.0, \"linear\")\n .rotate(BoneName.SHOULDER_L, 0.8, 0, -0.5) // Arms in clinch position\n .rotate(BoneName.SHOULDER_R, 0.8, 0, 0.5)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.3) // Bent for control\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0) // Support leg stabilizes\n .rotate(BoneName.FOOT_L, 0, 0, 0.03)\n .rotate(BoneName.HIP_R, 0, 0, 0) // Striking leg neutral\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .position(BoneName.PELVIS, 0, -0.01, 0)\n .build()\n // Frame 2: Chamber begins\n .keyframe(0.05, \"ease-out\")\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.6) // Arms pull opponent down\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.6)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.4)\n .rotate(BoneName.HIP_R, 1.0, 0, 0) // Hip flexes\n .rotate(BoneName.KNEE_R, -1.3, 0, 0) // Knee bends tight\n .rotate(BoneName.KNEE_L, -0.25, 0, 0) // Support leg adjusts\n .rotate(BoneName.FOOT_L, 0, 0, 0.05)\n .rotate(BoneName.SPINE_UPPER, -0.1, 0, 0) // Torso leans back slightly\n .position(BoneName.PELVIS, 0, -0.02, -0.05)\n .build()\n // Frame 3: Knee drive begins\n .keyframe(0.1, \"ease-out\")\n .rotate(BoneName.SHOULDER_L, 0.3, 0, -0.7) // Arms maintain clinch\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0.7)\n .rotate(BoneName.HIP_R, 1.3, 0, 0) // Knee drives upward\n .rotate(BoneName.KNEE_R, -0.8, 0, 0) // Opens slightly\n .rotate(BoneName.FOOT_R, 0.3, 0, 0) // Ankle plantarflexion\n .rotate(BoneName.PELVIS, 0.15, 0, 0) // Forward thrust\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0)\n .rotate(BoneName.KNEE_L, -0.15, 0, 0) // Support leg extends\n .position(BoneName.KNEE_R, 0, 0.3, 0.4) // Knee rises forward\n .position(BoneName.PELVIS, 0, 0, 0.15) // Hip drives forward\n .build()\n // Frame 4: Impact point\n .keyframe(0.12, \"linear\")\n .rotate(BoneName.SHOULDER_L, 0.2, 0, -0.8) // Maximum pull down\n .rotate(BoneName.SHOULDER_R, 0.2, 0, 0.8)\n .rotate(BoneName.HIP_R, 1.4, 0, 0) // Maximum knee extension\n .rotate(BoneName.KNEE_R, -0.5, 0, 0)\n .rotate(BoneName.FOOT_R, 0.4, 0, 0)\n .rotate(BoneName.PELVIS, 0.2, 0, 0) // Full hip thrust\n .rotate(BoneName.SPINE_LOWER, 0.15, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n .rotate(BoneName.KNEE_L, -0.1, 0, 0) // Support leg fully extended\n .position(BoneName.KNEE_R, 0, 0.4, 0.5)\n .position(BoneName.PELVIS, 0, 0.02, 0.2)\n .build()\n // Frame 5: Retraction\n .keyframe(0.15, \"ease-in\")\n .rotate(BoneName.HIP_R, 1.0, 0, 0) // Return to chamber\n .rotate(BoneName.KNEE_R, -1.3, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .position(BoneName.KNEE_R, 0, 0.2, 0.2)\n .position(BoneName.PELVIS, 0, -0.01, 0)\n .build()\n // Frame 6: Recovery\n .keyframe(0.2, \"ease-in\")\n .rotate(BoneName.SHOULDER_L, 0, 0, 0.5) // Arms return to guard\n .rotate(BoneName.SHOULDER_R, 0, 0, -0.5)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .rotate(BoneName.HIP_R, 0, 0, 0) // Leg returns to stance\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0) // Body neutral\n .position(BoneName.KNEE_R, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Side kick animation (옆차기 - Yeopchagi)\n *\n * Traditional Taekwondo side kick with lateral hip rotation,\n * leg extension to the side, and proper chamber-drive-retract sequence.\n *\n * Animation phases:\n * 1. Chamber (0.0s-0.1s): Knee lifts with hip turning sideways\n * 2. Drive (0.1s-0.15s): Leg drives laterally with hip thrust\n * 3. Extension (0.15s-0.2s): Full extension with heel strike\n * 4. Impact (0.2s): Maximum lateral extension\n * 5. Retraction (0.2s-0.35s): Return to chamber\n * 6. Recovery (0.35s-0.5s): Foot returns to ground, stance reset\n *\n * Duration: 500ms (30 frames @ 60fps)\n *\n * @korean 옆차기애니메이션\n */\nexport const SIDE_KICK_ANIMATION = AnimationBuilder.create(\"side_kick\")\n .withKoreanName(\"옆차기\")\n .withDuration(0.5)\n .withType(\"attack\")\n // Frame 1: Chamber with sideways turn\n .keyframe(0.1, \"ease-out\")\n .rotate(BoneName.HIP_R, 1.3, 0, 0.3) // Lift and turn\n .rotate(BoneName.KNEE_R, -1.6, 0, 0) // Tight chamber\n .rotate(BoneName.PELVIS, 0, -1.57, 0) // Turn left (90 degrees)\n .rotate(BoneName.SPINE_LOWER, 0, -1.4, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -1.2, 0.2) // Lean away\n .rotate(BoneName.KNEE_L, -0.3, 0, 0) // Support leg adjusts\n .rotate(BoneName.FOOT_L, 0, 0, 0.1)\n .rotate(BoneName.SHOULDER_L, 0, 0, -1.2) // Arms for balance\n .rotate(BoneName.SHOULDER_R, 0, 0, 0.8)\n .position(BoneName.PELVIS, 0, -0.02, 0)\n .build()\n // Frame 2: Drive begins\n .keyframe(0.15, \"ease-out\")\n .rotate(BoneName.HIP_R, 1.3, 0, 0.5) // Leg begins lateral extension\n .rotate(BoneName.KNEE_R, -1.0, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0.3, 0) // Heel positioning\n .rotate(BoneName.PELVIS, 0, -1.57, 0) // Hip thrust lateral\n .rotate(BoneName.SPINE_LOWER, 0, -1.4, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -1.2, 0.3)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0) // Support leg stabilizes\n .position(BoneName.FOOT_R, 0.4, 0, 0) // Lateral movement\n .build()\n // Frame 3: Full extension and impact\n .keyframe(0.2, \"linear\")\n .rotate(BoneName.HIP_R, 1.3, 0, 0.7) // Maximum lateral extension\n .rotate(BoneName.KNEE_R, -0.1, 0, 0) // Nearly straight\n .rotate(BoneName.FOOT_R, 0, 0.4, 0) // Heel strike position\n .rotate(BoneName.PELVIS, 0, -1.57, 0) // Maximum hip drive\n .rotate(BoneName.SPINE_LOWER, 0, -1.4, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -1.2, 0.4) // Maximum lean\n .rotate(BoneName.KNEE_L, -0.15, 0, 0) // Support leg extends\n .position(BoneName.FOOT_R, 0.7, 0, 0) // Maximum reach\n .position(BoneName.PELVIS, 0.1, 0, 0) // Slight lateral shift\n .build()\n // Frame 4: Retraction\n .keyframe(0.35, \"ease-in\")\n .rotate(BoneName.HIP_R, 1.3, 0, 0.3) // Return to chamber\n .rotate(BoneName.KNEE_R, -1.6, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, -1.2, 0) // Begin turning back\n .rotate(BoneName.SPINE_LOWER, 0, -1.0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -0.8, 0.2)\n .position(BoneName.FOOT_R, 0.3, 0, 0)\n .position(BoneName.PELVIS, 0, -0.01, 0)\n .build()\n // Frame 5: Recovery\n .keyframe(0.5, \"ease-in\")\n .rotate(BoneName.HIP_R, 0, 0, 0) // Return to neutral stance\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0, 0, 0.5)\n .rotate(BoneName.SHOULDER_R, 0, 0, -0.5)\n .position(BoneName.FOOT_R, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Elbow uppercut animation (팔꿈치 올려치기 - Palgumchi Ollyeochigi)\n *\n * Upward elbow strike from Hapkido, targeting chin/jaw area.\n * Close-range technique with explosive upward drive and leg spring.\n *\n * Animation phases:\n * 1. Crouch (0.0s): Lower stance, elbow chambers low\n * 2. Spring (0.05s): Legs drive upward with explosive force\n * 3. Drive (0.1s-0.12s): Elbow drives upward with hip thrust\n * 4. Impact (0.12s): Maximum upward extension at chin level\n * 5. Recovery (0.18s): Return to guard position\n *\n * Duration: 180ms (11 frames @ 60fps)\n *\n * @korean 팔꿈치올려치기애니메이션\n */\nexport const ELBOW_UPPERCUT_ANIMATION = AnimationBuilder.create(\n \"elbow_uppercut\",\n)\n .withKoreanName(\"팔꿈치올려치기\")\n .withDuration(0.18)\n .withType(\"attack\")\n .keyframe(0.0, \"linear\")\n .rotate(BoneName.SHOULDER_R, -0.3, 0, 0.5)\n .rotate(BoneName.ELBOW_R, 0, 0, 2.0)\n .rotate(BoneName.FOREARM_R, 0, -0.8, 0)\n .rotate(BoneName.KNEE_L, -0.5, 0, 0)\n .rotate(BoneName.KNEE_R, -0.5, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.2, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.15, 0, 0)\n .rotate(BoneName.PELVIS, 0.1, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0, 0, 0.5)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .position(BoneName.PELVIS, 0, -0.1, 0)\n .build()\n .keyframe(0.05, \"ease-out\")\n .rotate(BoneName.SHOULDER_R, 0, 0, 0.8)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .rotate(BoneName.FOREARM_R, 0, -0.5, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.PELVIS, 0, -0.02, 0)\n .position(BoneName.ELBOW_R, 0, 0.2, 0.3)\n .build()\n .keyframe(0.1, \"ease-out\")\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 1.0)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5)\n .rotate(BoneName.FOREARM_R, 0, -0.2, 0)\n .rotate(BoneName.KNEE_L, -0.1, 0, 0)\n .rotate(BoneName.KNEE_R, -0.1, 0, 0)\n .rotate(BoneName.PELVIS, -0.1, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.05, 0, 0)\n .position(BoneName.PELVIS, 0, 0.05, 0.1)\n .position(BoneName.ELBOW_R, 0, 0.5, 0.4)\n .build()\n .keyframe(0.12, \"linear\")\n .rotate(BoneName.SHOULDER_R, 0.8, 0, 1.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.4)\n .rotate(BoneName.FOREARM_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.05, 0, 0)\n .rotate(BoneName.KNEE_R, -0.05, 0, 0)\n .rotate(BoneName.PELVIS, -0.15, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.05, 0, 0)\n .position(BoneName.PELVIS, 0, 0.08, 0.15)\n .position(BoneName.ELBOW_R, 0, 0.7, 0.5)\n .build()\n .keyframe(0.18, \"ease-in\")\n .rotate(BoneName.SHOULDER_R, 0, 0, -0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .rotate(BoneName.FOREARM_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0, 0, 0.5)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .position(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.ELBOW_R, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Axe kick animation (내려차기 - Naeryeochagi)\n *\n * Traditional Taekwondo downward axe kick targeting head/shoulder.\n * Leg rises high then chops downward with heel strike.\n *\n * Animation phases:\n * 1. Chamber (0.0s-0.15s): Leg rises high in front\n * 2. Peak (0.15s-0.2s): Maximum height, leg nearly vertical\n * 3. Chop (0.2s-0.3s): Leg descends rapidly with heel strike\n * 4. Impact (0.3s): Maximum downward force\n * 5. Recovery (0.3s-0.5s): Return to stance\n *\n * Duration: 500ms\n *\n * @korean 내려차기애니메이션\n */\nexport const AXE_KICK_ANIMATION = AnimationBuilder.create(\"axe_kick\")\n .withKoreanName(\"내려차기\")\n .withDuration(0.5)\n .withType(\"attack\")\n // Frame 1: Leg rises in front\n .keyframe(0.15, \"ease-out\")\n .rotate(BoneName.HIP_R, 2.0, 0, 0) // High lift (>120 degrees)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0) // Nearly straight\n .rotate(BoneName.FOOT_R, 0.5, 0, 0) // Dorsiflexion\n .rotate(BoneName.KNEE_L, -0.3, 0, 0) // Support leg bent\n .rotate(BoneName.PELVIS, -0.2, 0, 0) // Tilts back\n .rotate(BoneName.SPINE_LOWER, -0.15, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.1, 0, 0) // Lean back for balance\n .rotate(BoneName.SHOULDER_L, -0.8, 0.3, 0.4) // Guard position\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.8, -0.3, -0.4)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .position(BoneName.PELVIS, 0, -0.05, -0.1)\n .build()\n // Frame 2: Peak height (nearly vertical)\n .keyframe(0.2, \"linear\")\n .rotate(BoneName.HIP_R, 2.5, 0, 0) // Maximum height (>140 degrees)\n .rotate(BoneName.KNEE_R, -0.1, 0, 0) // Fully extended\n .rotate(BoneName.FOOT_R, 0.6, 0, 0)\n .rotate(BoneName.KNEE_L, -0.35, 0, 0)\n .rotate(BoneName.PELVIS, -0.25, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.2, 0, 0)\n .rotate(BoneName.SPINE_UPPER, -0.15, 0, 0)\n .position(BoneName.FOOT_R, 0, 1.5, 0.3) // High above\n .position(BoneName.PELVIS, 0, -0.08, -0.15)\n .build()\n // Frame 3: Downward chop\n .keyframe(0.3, \"ease-in\")\n .rotate(BoneName.HIP_R, 0.8, 0, 0) // Descending rapidly\n .rotate(BoneName.KNEE_R, -0.15, 0, 0)\n .rotate(BoneName.FOOT_R, -0.3, 0, 0) // Heel strike angle\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.PELVIS, 0.1, 0, 0) // Pelvis drives forward\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.05, 0, 0)\n .position(BoneName.FOOT_R, 0, 0.5, 0.4) // Striking down\n .position(BoneName.PELVIS, 0, 0, 0.1)\n .build()\n // Frame 4: Recovery\n .keyframe(0.5, \"ease-in\")\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .position(BoneName.FOOT_R, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Back kick animation (뒤차기 - Dwichagi)\n *\n * Traditional Taekwondo spinning back kick with powerful heel thrust.\n * Turn 180 degrees and deliver straight back kick.\n *\n * Animation phases:\n * 1. Turn start (0.0s-0.1s): Begin spinning left\n * 2. Chamber (0.1s-0.15s): Look over shoulder, leg chambers\n * 3. Thrust (0.15s-0.2s): Heel drives backward\n * 4. Impact (0.2s-0.25s): Full extension\n * 5. Recovery (0.25s-0.45s): Complete rotation, return to stance\n *\n * Duration: 450ms\n *\n * @korean 뒤차기애니메이션\n */\nexport const BACK_KICK_ANIMATION = AnimationBuilder.create(\"back_kick\")\n .withKoreanName(\"뒤차기\")\n .withDuration(0.45)\n .withType(\"attack\")\n // Frame 1: Begin spin\n .keyframe(0.1, \"ease-out\")\n .rotate(BoneName.PELVIS, 0, -1.5, 0) // Turn left ~90 degrees\n .rotate(BoneName.SPINE_LOWER, 0, -1.3, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -1.0, 0.1) // Look over shoulder\n .rotate(BoneName.HEAD, 0, 0.5, 0) // Look back at target\n .rotate(BoneName.HIP_R, 0.3, 0, 0) // Begin lift\n .rotate(BoneName.KNEE_R, -0.8, 0, 0) // Chamber\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, -0.5)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0.5)\n .position(BoneName.PELVIS, 0, -0.02, 0)\n .build()\n // Frame 2: Full chamber\n .keyframe(0.15, \"linear\")\n .rotate(BoneName.PELVIS, 0, -2.8, 0) // Turn ~160 degrees\n .rotate(BoneName.SPINE_LOWER, 0, -2.5, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -2.2, 0.15)\n .rotate(BoneName.HEAD, 0, 0.8, 0)\n .rotate(BoneName.HIP_R, 0.8, 0, 0) // Knee lifts\n .rotate(BoneName.KNEE_R, -1.5, 0, 0) // Tight chamber\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .position(BoneName.PELVIS, 0, -0.01, -0.05)\n .build()\n // Frame 3: Thrust backward\n .keyframe(0.2, \"ease-out\")\n .rotate(BoneName.PELVIS, 0, -3.14, 0) // Full 180 degrees\n .rotate(BoneName.SPINE_LOWER, 0, -3.0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -2.8, 0.2)\n .rotate(BoneName.HEAD, 0, 1.0, 0)\n .rotate(BoneName.HIP_R, 0.5, 0, 0) // Extends backward\n .rotate(BoneName.KNEE_R, -0.2, 0, 0) // Leg straightens\n .rotate(BoneName.FOOT_R, -0.4, 0, 0) // Heel strike\n .rotate(BoneName.KNEE_L, -0.15, 0, 0)\n .position(BoneName.FOOT_R, 0, 0, -0.8) // Thrust back\n .position(BoneName.PELVIS, 0, 0, 0.15)\n .build()\n // Frame 4: Impact\n .keyframe(0.25, \"linear\")\n .rotate(BoneName.PELVIS, 0, -3.14, 0)\n .rotate(BoneName.SPINE_LOWER, 0, -3.0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -2.8, 0.25)\n .rotate(BoneName.HIP_R, 0.3, 0, 0) // Full extension\n .rotate(BoneName.KNEE_R, -0.05, 0, 0) // Straight\n .rotate(BoneName.FOOT_R, -0.5, 0, 0)\n .position(BoneName.FOOT_R, 0, 0.2, -1.0) // Maximum reach\n .position(BoneName.PELVIS, 0, 0, 0.2)\n .build()\n // Frame 5: Recovery (complete rotation)\n .keyframe(0.45, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, 0, 0) // Return to forward\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.HEAD, 0, 0, 0)\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .position(BoneName.FOOT_R, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Tornado kick animation (회오리차기 - Hoeori Chagi)\n *\n * 360-degree spinning kick with explosive roundhouse at peak rotation.\n *\n * Animation phases:\n * 1. Wind-up (0.0s-0.15s): Begin 360 spin\n * 2. Half turn (0.15s-0.25s): Continue rotation, leg chambers\n * 3. Kick (0.25s-0.35s): Roundhouse executes at peak rotation\n * 4. Complete spin (0.35s-0.55s): Finish rotation, land\n *\n * Duration: 550ms\n *\n * @korean 회오리차기애니메이션\n */\nexport const TORNADO_KICK_ANIMATION = AnimationBuilder.create(\"tornado_kick\")\n .withKoreanName(\"회오리차기\")\n .withDuration(0.55)\n .withType(\"attack\")\n // Frame 1: Begin spin\n .keyframe(0.15, \"ease-out\")\n .rotate(BoneName.PELVIS, 0, -2.0, 0) // Spin ~115 degrees\n .rotate(BoneName.SPINE_LOWER, 0, -1.8, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -1.5, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, -0.2) // Pivot foot\n .rotate(BoneName.HIP_R, 0.4, 0, 0.3) // Leg begins lift\n .rotate(BoneName.KNEE_R, -0.8, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.5, 0, -0.5)\n .rotate(BoneName.SHOULDER_R, 0.5, 0, 0.5)\n .position(BoneName.PELVIS, 0, 0.1, 0) // Slight jump\n .build()\n // Frame 2: Continue spin, chamber\n .keyframe(0.25, \"linear\")\n .rotate(BoneName.PELVIS, 0, -4.0, 0) // Spin ~230 degrees\n .rotate(BoneName.SPINE_LOWER, 0, -3.8, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -3.5, 0)\n .rotate(BoneName.KNEE_L, -0.15, 0, 0)\n .rotate(BoneName.FOOT_L, 0, 0, -0.3)\n .rotate(BoneName.HIP_R, 1.2, 0, 0.8) // Chamber for roundhouse\n .rotate(BoneName.KNEE_R, -1.5, 0, 0)\n .position(BoneName.PELVIS, 0, 0.15, 0) // Jump peak\n .build()\n // Frame 3: Execute kick at peak rotation\n .keyframe(0.35, \"ease-out\")\n .rotate(BoneName.PELVIS, 0, -5.5, 0) // Spin ~315 degrees\n .rotate(BoneName.SPINE_LOWER, 0, -5.3, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -5.0, 0.3)\n .rotate(BoneName.KNEE_L, -0.1, 0, 0)\n .rotate(BoneName.HIP_R, 1.2, 0, 1.6) // Full roundhouse extension\n .rotate(BoneName.KNEE_R, -0.1, 0, 0)\n .rotate(BoneName.FOOT_R, 0.4, 0, 0.3)\n .position(BoneName.FOOT_R, 0.8, 0, 0) // Lateral strike\n .position(BoneName.PELVIS, 0, 0.1, 0) // Descending\n .build()\n // Frame 4: Complete rotation and land\n .keyframe(0.55, \"ease-in\")\n .rotate(BoneName.PELVIS, 0, -6.28, 0) // Full 360 degrees\n .rotate(BoneName.SPINE_LOWER, 0, -6.28, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -6.28, 0)\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0) // Absorb landing\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .position(BoneName.FOOT_R, 0, 0, 0)\n .position(BoneName.PELVIS, 0, -0.05, 0) // Land\n .build()\n .build();\n\n/**\n * Jumping kick animation (뛰어차기 - Ttwieo Chagi)\n *\n * Jumping front kick with explosive upward momentum.\n *\n * Animation phases:\n * 1. Crouch (0.0s-0.1s): Load legs for jump\n * 2. Jump (0.1s-0.2s): Explosive upward, front kick chambers\n * 3. Kick (0.2s-0.3s): Front kick at peak height\n * 4. Retract (0.3s-0.4s): Leg pulls back\n * 5. Land (0.4s-0.5s): Absorb landing\n *\n * Duration: 500ms\n *\n * @korean 뛰어차기애니메이션\n */\nexport const JUMPING_KICK_ANIMATION = AnimationBuilder.create(\"jumping_kick\")\n .withKoreanName(\"뛰어차기\")\n .withDuration(0.5)\n .withType(\"attack\")\n // Frame 1: Crouch to load\n .keyframe(0.1, \"ease-out\")\n .rotate(BoneName.KNEE_L, -0.6, 0, 0)\n .rotate(BoneName.KNEE_R, -0.6, 0, 0)\n .rotate(BoneName.PELVIS, 0.1, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.3, 0, -0.5)\n .rotate(BoneName.SHOULDER_R, 0.3, 0, 0.5)\n .position(BoneName.PELVIS, 0, -0.15, 0)\n .build()\n // Frame 2: Jump and chamber\n .keyframe(0.2, \"ease-out\")\n .rotate(BoneName.KNEE_L, -0.1, 0, 0) // Jump leg extends\n .rotate(BoneName.HIP_R, 1.6, 0, 0) // Chamber\n .rotate(BoneName.KNEE_R, -2.0, 0, 0)\n .rotate(BoneName.PELVIS, -0.1, 0, 0)\n .rotate(BoneName.SPINE_LOWER, -0.05, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.9, 0.3, 0.4)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.9, -0.3, -0.4)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .position(BoneName.PELVIS, 0, 0.3, 0) // Airborne\n .build()\n // Frame 3: Kick extends at peak\n .keyframe(0.3, \"linear\")\n .rotate(BoneName.KNEE_L, -0.05, 0, 0)\n .rotate(BoneName.HIP_R, 1.7, 0, 0)\n .rotate(BoneName.KNEE_R, 0.1, 0, 0) // Full extension\n .rotate(BoneName.FOOT_R, 0.5, 0, 0) // Dorsiflexion\n .rotate(BoneName.PELVIS, 0.15, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.1, 0, 0)\n .position(BoneName.PELVIS, 0, 0.35, 0.1) // Peak height\n .build()\n // Frame 4: Retract\n .keyframe(0.4, \"ease-in\")\n .rotate(BoneName.KNEE_L, -0.1, 0, 0)\n .rotate(BoneName.HIP_R, 1.4, 0, 0)\n .rotate(BoneName.KNEE_R, -1.5, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0.15, 0) // Descending\n .build()\n // Frame 5: Land\n .keyframe(0.5, \"ease-in\")\n .rotate(BoneName.KNEE_L, -0.35, 0, 0) // Absorb landing\n .rotate(BoneName.KNEE_R, -0.35, 0, 0)\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .position(BoneName.PELVIS, 0, -0.05, 0)\n .build()\n .build();\n\n/**\n * Sweep animation (다리걸기 - Dari Geolgi)\n *\n * Low sweeping kick targeting opponent's ankles for takedown.\n *\n * Animation phases:\n * 1. Drop (0.0s-0.1s): Lower stance, weight on one leg\n * 2. Sweep (0.1s-0.2s): Leg sweeps low in arc\n * 3. Follow through (0.2s-0.3s): Complete sweep arc\n * 4. Recovery (0.3s-0.45s): Return to stance\n *\n * Duration: 450ms\n *\n * @korean 다리걸기애니메이션\n */\nexport const SWEEP_ANIMATION = AnimationBuilder.create(\"sweep\")\n .withKoreanName(\"다리걸기\")\n .withDuration(0.45)\n .withType(\"attack\")\n // Frame 1: Drop low\n .keyframe(0.1, \"ease-out\")\n .rotate(BoneName.KNEE_L, -1.2, 0, 0) // Deep crouch\n .rotate(BoneName.KNEE_R, -0.3, 0, 0) // Sweep leg lighter\n .rotate(BoneName.PELVIS, 0.2, 0, 0) // Lean forward\n .rotate(BoneName.SPINE_LOWER, 0.3, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.4, 0, 0)\n .rotate(BoneName.SHOULDER_L, 0.6, 0, -0.8) // Arms for balance\n .rotate(BoneName.SHOULDER_R, 0.6, 0, 0.8)\n .position(BoneName.PELVIS, 0, -0.3, 0) // Low position\n .build()\n // Frame 2: Sweep begins\n .keyframe(0.2, \"ease-out\")\n .rotate(BoneName.KNEE_L, -1.3, 0, 0)\n .rotate(BoneName.HIP_R, 0.3, 0, 1.0) // Leg sweeps outward\n .rotate(BoneName.KNEE_R, -0.2, 0, 0) // Nearly straight\n .rotate(BoneName.FOOT_R, 0, 0, 0.3) // Foot sweeps\n .rotate(BoneName.PELVIS, 0.25, -0.5, 0) // Rotate into sweep\n .rotate(BoneName.SPINE_LOWER, 0.35, -0.4, 0)\n .rotate(BoneName.SPINE_UPPER, 0.45, -0.3, 0)\n .position(BoneName.FOOT_R, 0.5, 0, 0) // Lateral sweep\n .position(BoneName.PELVIS, 0, -0.35, 0)\n .build()\n // Frame 3: Follow through\n .keyframe(0.3, \"linear\")\n .rotate(BoneName.KNEE_L, -1.2, 0, 0)\n .rotate(BoneName.HIP_R, 0.5, 0, 1.5) // Maximum sweep\n .rotate(BoneName.KNEE_R, -0.15, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0.4)\n .rotate(BoneName.PELVIS, 0.3, -0.8, 0)\n .rotate(BoneName.SPINE_LOWER, 0.4, -0.6, 0)\n .rotate(BoneName.SPINE_UPPER, 0.5, -0.4, 0)\n .position(BoneName.FOOT_R, 0.8, -0.1, 0) // Low and wide\n .position(BoneName.PELVIS, 0.1, -0.3, 0)\n .build()\n // Frame 4: Recovery\n .keyframe(0.45, \"ease-in\")\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .position(BoneName.FOOT_R, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Throw animation (던지기 - Deonjigi)\n *\n * Hapkido/Judo style hip throw technique.\n *\n * Animation phases:\n * 1. Entry (0.0s-0.15s): Step in, grab opponent\n * 2. Load (0.15s-0.25s): Hip under opponent\n * 3. Throw (0.25s-0.4s): Execute throw over hip\n * 4. Recovery (0.4s-0.55s): Return to stance\n *\n * Duration: 550ms\n *\n * @korean 던지기애니메이션\n */\nexport const THROW_ANIMATION = AnimationBuilder.create(\"throw\")\n .withKoreanName(\"던지기\")\n .withDuration(0.55)\n .withType(\"attack\")\n // Frame 1: Entry and grab\n .keyframe(0.15, \"ease-out\")\n .rotate(BoneName.SHOULDER_L, 0.6, 0.5, -0.3) // Reach for collar\n .rotate(BoneName.ELBOW_L, 0, 0, -1.0)\n .rotate(BoneName.SHOULDER_R, 0.8, -0.3, 0.2) // Reach for sleeve/hip\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .rotate(BoneName.PELVIS, 0, 0.8, 0) // Turn into opponent\n .rotate(BoneName.SPINE_LOWER, 0, 0.7, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.5, 0)\n .rotate(BoneName.KNEE_L, -0.4, 0, 0) // Step in\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .position(BoneName.PELVIS, 0, -0.05, 0.2) // Move into opponent\n .build()\n // Frame 2: Load hip under opponent\n .keyframe(0.25, \"linear\")\n .rotate(BoneName.SHOULDER_L, 0.3, 0.7, -0.5) // Pull collar\n .rotate(BoneName.ELBOW_L, 0, 0, -1.3)\n .rotate(BoneName.SHOULDER_R, 0.5, -0.5, 0.4) // Pull sleeve\n .rotate(BoneName.ELBOW_R, 0, 0, 1.0)\n .rotate(BoneName.PELVIS, 0.2, 1.2, 0) // Hip under, body turns\n .rotate(BoneName.SPINE_LOWER, 0.3, 1.0, 0)\n .rotate(BoneName.SPINE_UPPER, 0.4, 0.8, 0)\n .rotate(BoneName.KNEE_L, -0.6, 0, 0) // Knees bend to get under\n .rotate(BoneName.KNEE_R, -0.5, 0, 0)\n .position(BoneName.PELVIS, 0, -0.15, 0.15)\n .build()\n // Frame 3: Execute throw\n .keyframe(0.4, \"ease-out\")\n .rotate(BoneName.SHOULDER_L, -0.4, 0.8, -0.8) // Drive down with pull\n .rotate(BoneName.ELBOW_L, 0, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, -0.2, -0.6, 0.6) // Lift and rotate\n .rotate(BoneName.ELBOW_R, 0, 0, 0.6)\n .rotate(BoneName.PELVIS, 0.5, 1.8, 0) // Hip drives through\n .rotate(BoneName.SPINE_LOWER, 0.6, 1.5, 0)\n .rotate(BoneName.SPINE_UPPER, 0.7, 1.2, -0.2) // Bend forward\n .rotate(BoneName.KNEE_L, -0.3, 0, 0) // Legs straighten for lift\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .position(BoneName.PELVIS, 0, 0.05, 0.1)\n .build()\n // Frame 4: Recovery\n .keyframe(0.55, \"ease-in\")\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Grapple animation (잡기/꺾기 - Japgi/Kkeokgi)\n *\n * Joint lock/grapple technique from Hapkido.\n *\n * Animation phases:\n * 1. Catch (0.0s-0.12s): Grab opponent's arm\n * 2. Control (0.12s-0.25s): Apply joint pressure\n * 3. Lock (0.25s-0.4s): Full joint lock applied\n * 4. Hold (0.4s-0.5s): Maintain control\n *\n * Duration: 500ms\n *\n * @korean 잡기꺾기애니메이션\n */\nexport const GRAPPLE_ANIMATION = AnimationBuilder.create(\"grapple\")\n .withKoreanName(\"잡기/꺾기\")\n .withDuration(0.5)\n .withType(\"attack\")\n // Frame 1: Catch arm\n .keyframe(0.12, \"ease-out\")\n .rotate(BoneName.SHOULDER_L, 0.4, 0.6, -0.2) // Both hands reach\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.WRIST_L, 0, -0.3, 0) // Rotate to grab\n .rotate(BoneName.SHOULDER_R, 0.6, -0.4, 0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.8)\n .rotate(BoneName.WRIST_R, 0, 0.3, 0)\n .rotate(BoneName.PELVIS, 0, 0.3, 0) // Body turns slightly\n .rotate(BoneName.SPINE_LOWER, 0, 0.25, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.2, -0.1)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .position(BoneName.PELVIS, 0, -0.03, 0.1)\n .build()\n // Frame 2: Apply control\n .keyframe(0.25, \"linear\")\n .rotate(BoneName.SHOULDER_L, 0.2, 0.8, -0.4) // Pull down\n .rotate(BoneName.ELBOW_L, 0, 0, -1.5)\n .rotate(BoneName.WRIST_L, 0, -0.5, -0.3)\n .rotate(BoneName.SHOULDER_R, 0.3, -0.6, 0.5) // Rotate opponent's arm\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .rotate(BoneName.WRIST_R, 0, 0.5, 0.2)\n .rotate(BoneName.PELVIS, 0.1, 0.5, 0)\n .rotate(BoneName.SPINE_LOWER, 0.15, 0.4, 0)\n .rotate(BoneName.SPINE_UPPER, 0.2, 0.3, -0.15)\n .rotate(BoneName.KNEE_L, -0.35, 0, 0)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .position(BoneName.PELVIS, 0, -0.08, 0.08)\n .build()\n // Frame 3: Lock position\n .keyframe(0.4, \"ease-in\")\n .rotate(BoneName.SHOULDER_L, -0.1, 1.0, -0.6) // Secure lock\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .rotate(BoneName.WRIST_L, 0, -0.6, -0.4)\n .rotate(BoneName.SHOULDER_R, 0.1, -0.8, 0.7)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.4)\n .rotate(BoneName.WRIST_R, 0, 0.6, 0.3)\n .rotate(BoneName.PELVIS, 0.15, 0.6, 0)\n .rotate(BoneName.SPINE_LOWER, 0.2, 0.5, 0)\n .rotate(BoneName.SPINE_UPPER, 0.25, 0.4, -0.2)\n .rotate(BoneName.KNEE_L, -0.4, 0, 0)\n .rotate(BoneName.KNEE_R, -0.35, 0, 0)\n .position(BoneName.PELVIS, 0, -0.1, 0.05)\n .build()\n // Frame 4: Hold\n .keyframe(0.5, \"linear\")\n .rotate(BoneName.SHOULDER_L, -0.1, 1.0, -0.6)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .rotate(BoneName.SHOULDER_R, 0.1, -0.8, 0.7)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.4)\n .rotate(BoneName.PELVIS, 0.15, 0.6, 0)\n .rotate(BoneName.SPINE_LOWER, 0.2, 0.5, 0)\n .rotate(BoneName.SPINE_UPPER, 0.25, 0.4, -0.2)\n .rotate(BoneName.KNEE_L, -0.4, 0, 0)\n .rotate(BoneName.KNEE_R, -0.35, 0, 0)\n .position(BoneName.PELVIS, 0, -0.1, 0.05)\n .build()\n .build();\n\n/**\n * Counter attack animation (반격 - Bangyeok)\n *\n * Parry and counter technique from Hapkido.\n *\n * Animation phases:\n * 1. Parry (0.0s-0.1s): Deflect incoming attack\n * 2. Redirect (0.1s-0.18s): Guide opponent's momentum\n * 3. Counter (0.18s-0.28s): Strike to vulnerable point\n * 4. Recovery (0.28s-0.4s): Return to guard\n *\n * Duration: 400ms\n *\n * @korean 반격애니메이션\n */\nexport const COUNTER_ATTACK_ANIMATION = AnimationBuilder.create(\n \"counter_attack\",\n)\n .withKoreanName(\"반격\")\n .withDuration(0.4)\n .withType(\"attack\")\n // Frame 1: Parry\n .keyframe(0.1, \"ease-out\")\n .rotate(BoneName.SHOULDER_L, 0.2, 0.5, -0.8) // Parry hand\n .rotate(BoneName.ELBOW_L, 0, 0, -0.8)\n .rotate(BoneName.WRIST_L, 0, 0.4, 0)\n .rotate(BoneName.SHOULDER_R, 0, 0, 0.5) // Ready to strike\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5)\n .rotate(BoneName.PELVIS, 0, -0.3, 0) // Turn away from attack\n .rotate(BoneName.SPINE_LOWER, 0, -0.25, 0)\n .rotate(BoneName.SPINE_UPPER, 0, -0.2, 0)\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .position(BoneName.PELVIS, 0, -0.02, -0.1) // Slight retreat\n .build()\n // Frame 2: Redirect\n .keyframe(0.18, \"linear\")\n .rotate(BoneName.SHOULDER_L, 0.3, 0.8, -0.5) // Guide opponent\n .rotate(BoneName.ELBOW_L, 0, 0, -1.0)\n .rotate(BoneName.WRIST_L, 0, 0.3, -0.2)\n .rotate(BoneName.SHOULDER_R, 0.2, 0, 0) // Chamber counter\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .rotate(BoneName.PELVIS, 0, 0.2, 0) // Begin rotation into counter\n .rotate(BoneName.SPINE_LOWER, 0, 0.15, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.1, 0)\n .position(BoneName.PELVIS, 0, -0.01, 0)\n .build()\n // Frame 3: Counter strike\n .keyframe(0.28, \"ease-out\")\n .rotate(BoneName.SHOULDER_L, 0.1, 0.5, -0.3) // Maintain control\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.SHOULDER_R, -0.5, 0, 0.4) // Drive counter\n .rotate(BoneName.ELBOW_R, 0, 0, 0.3)\n .rotate(BoneName.WRIST_R, 0, 0, -0.2)\n .rotate(BoneName.PELVIS, 0, 0.5, 0) // Full rotation into strike\n .rotate(BoneName.SPINE_LOWER, 0, 0.4, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.3, 0)\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0.1)\n .build()\n // Frame 4: Recovery\n .keyframe(0.4, \"ease-in\")\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Palm strike animation (장권 - Janggwon)\n *\n * Open palm heel strike from Taekwondo.\n *\n * Animation phases:\n * 1. Chamber (0.0s-0.08s): Palm pulls back\n * 2. Drive (0.08s-0.15s): Hip rotation and palm drives forward\n * 3. Impact (0.15s-0.18s): Maximum extension\n * 4. Recovery (0.18s-0.3s): Return to guard\n *\n * Duration: 300ms\n *\n * @korean 장권애니메이션\n */\nexport const PALM_STRIKE_ANIMATION = AnimationBuilder.create(\"palm_strike\")\n .withKoreanName(\"장권\")\n .withDuration(0.3)\n .withType(\"attack\")\n // Frame 1: Chamber\n .keyframe(0.08, \"linear\")\n .rotate(BoneName.SHOULDER_R, 0.2, 0, -0.3) // Pull back\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .rotate(BoneName.WRIST_R, -0.8, 0, 0) // Palm faces forward\n .rotate(BoneName.SPINE_UPPER, 0, -0.2, 0) // Wind up\n .rotate(BoneName.SPINE_MIDDLE, 0, -0.15, 0)\n .rotate(BoneName.PELVIS, 0, -0.1, 0)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2) // Guard\n .build()\n // Frame 2: Drive\n .keyframe(0.15, \"ease-out\")\n .rotate(BoneName.SHOULDER_R, -0.5, 0, 0.4) // Drive forward\n .rotate(BoneName.ELBOW_R, 0, 0, 0.3) // Extend\n .rotate(BoneName.WRIST_R, -0.6, 0, 0) // Heel of palm forward\n .rotate(BoneName.SPINE_UPPER, 0, 0.3, 0) // Torso rotates\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.25, 0)\n .rotate(BoneName.PELVIS, 0, 0.2, 0)\n .build()\n // Frame 3: Impact\n .keyframe(0.18, \"linear\")\n .rotate(BoneName.SHOULDER_R, -0.7, 0, 0.5) // Full extension\n .rotate(BoneName.ELBOW_R, 0, 0, 0.05)\n .rotate(BoneName.WRIST_R, -0.5, 0, 0.1)\n .rotate(BoneName.SPINE_UPPER, 0, 0.4, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.35, 0)\n .rotate(BoneName.PELVIS, 0, 0.25, 0)\n .build()\n // Frame 4: Recovery\n .keyframe(0.3, \"ease-in\")\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .rotate(BoneName.WRIST_R, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Hook punch animation (후크 - 횡타)\n *\n * Circular punch targeting the side of the head. Power technique.\n *\n * Animation phases:\n * 1. Wind-up (0.0s): Arm pulls to side\n * 2. Arc swing (0.1s): Arm swings in horizontal arc\n * 3. Impact (0.15s): Fist connects at temple level\n * 4. Recovery (0.3s): Return to guard\n *\n * Duration: 300ms\n *\n * @korean 후크애니메이션\n */\nexport const HOOK_ANIMATION = AnimationBuilder.create(\"hook\")\n .withKoreanName(\"후크\")\n .withDuration(0.3)\n .withType(\"attack\")\n // Wind-up: arm pulls back and to side\n .keyframe(0.0, \"linear\")\n .rotate(BoneName.SHOULDER_R, 0.1, -0.6, -0.5) // Shoulder rotated out\n .rotate(BoneName.ELBOW_R, 0, 0, 1.57) // 90° bend\n .rotate(BoneName.SPINE_UPPER, 0, -0.3, 0) // Torso twisted back\n .rotate(BoneName.PELVIS, 0, -0.2, 0) // Hip loaded\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2) // Guard\n .build()\n // Arc swing: horizontal sweep\n .keyframe(0.1, \"ease-out\")\n .rotate(BoneName.SHOULDER_R, 0, 0.4, 0.3) // Shoulder drives across\n .rotate(BoneName.ELBOW_R, 0, 0, 1.4) // Elbow stays bent\n .rotate(BoneName.SPINE_UPPER, 0, 0.4, 0) // Torso rotates into punch\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.3, 0)\n .rotate(BoneName.PELVIS, 0, 0.25, 0) // Hip rotation for power\n .build()\n // Impact: full rotation\n .keyframe(0.15, \"linear\")\n .rotate(BoneName.SHOULDER_R, -0.1, 0.6, 0.4) // Full horizontal\n .rotate(BoneName.ELBOW_R, 0, 0, 1.35) // Elbow locked at angle\n .rotate(BoneName.WRIST_R, 0, 0.2, 0) // Wrist aligned\n .rotate(BoneName.SPINE_UPPER, 0, 0.5, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.4, 0)\n .rotate(BoneName.PELVIS, 0, 0.35, 0)\n .build()\n // Recovery: return to guard\n .keyframe(0.3, \"ease-in\")\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Low kick animation (하단차기 - 낮은차기)\n *\n * Low sweeping kick targeting opponent's thighs or calves.\n * Used to destabilize and damage legs.\n *\n * Animation phases:\n * 1. Chamber (0.0s): Small knee lift\n * 2. Swing (0.12s): Leg sweeps low horizontally\n * 3. Impact (0.18s): Shin connects at thigh height\n * 4. Recovery (0.35s): Return to stance\n *\n * Duration: 350ms\n *\n * @korean 하단차기애니메이션\n */\nexport const LOW_KICK_ANIMATION = AnimationBuilder.create(\"low_kick\")\n .withKoreanName(\"하단차기\")\n .withDuration(0.35)\n .withType(\"attack\")\n // Chamber: small lift\n .keyframe(0.0, \"linear\")\n .rotate(BoneName.HIP_R, 0.5, 0, 0.3) // Low hip flexion\n .rotate(BoneName.KNEE_R, -0.8, 0, 0) // Knee bent\n .rotate(BoneName.KNEE_L, -0.2, 0, 0) // Support knee bent\n .rotate(BoneName.PELVIS, 0, -0.2, 0) // Slight turn\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3) // High guard\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .build()\n // Swing: low horizontal sweep\n .keyframe(0.12, \"ease-out\")\n .rotate(BoneName.HIP_R, 0.4, 0, 1.2) // Hip rotates out\n .rotate(BoneName.KNEE_R, -0.3, 0, 0) // Leg extends\n .rotate(BoneName.FOOT_R, 0.2, 0, 0.2) // Ankle pointed\n .rotate(BoneName.PELVIS, 0, -0.8, 0) // Full hip rotation\n .rotate(BoneName.SPINE_UPPER, 0, 0.4, 0) // Counter-rotate\n .rotate(BoneName.KNEE_L, -0.4, 0, 0) // Lower for stability\n .build()\n // Impact: shin at thigh height\n .keyframe(0.18, \"linear\")\n .rotate(BoneName.HIP_R, 0.3, 0, 1.5) // Full rotation\n .rotate(BoneName.KNEE_R, -0.15, 0, 0) // Nearly straight\n .rotate(BoneName.FOOT_R, 0.3, 0, 0.3)\n .rotate(BoneName.PELVIS, 0, -1.2, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0.6, 0)\n .build()\n // Recovery: return to stance\n .keyframe(0.35, \"ease-in\")\n .rotate(BoneName.HIP_R, 0, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .build()\n .build();\n\n/**\n * Slam animation (슬램 - 내던지기)\n *\n * Powerful lifting and slamming throw. High damage grappling technique.\n *\n * Animation phases:\n * 1. Clinch (0.0s): Grab and secure opponent\n * 2. Lift (0.2s): Hoist opponent up\n * 3. Slam (0.35s): Drive opponent down\n * 4. Recovery (0.5s): Return to stance\n *\n * Duration: 500ms\n *\n * @korean 슬램애니메이션\n */\nexport const SLAM_ANIMATION = AnimationBuilder.create(\"slam\")\n .withKoreanName(\"슬램\")\n .withDuration(0.5)\n .withType(\"attack\")\n // Clinch: grab opponent\n .keyframe(0.0, \"linear\")\n .rotate(BoneName.SHOULDER_L, 0.6, 0.4, -0.5) // Arms wrap around\n .rotate(BoneName.ELBOW_L, 0, 0, -1.3)\n .rotate(BoneName.SHOULDER_R, 0.6, -0.4, 0.5)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .rotate(BoneName.KNEE_L, -0.4, 0, 0) // Deep stance\n .rotate(BoneName.KNEE_R, -0.4, 0, 0)\n .rotate(BoneName.PELVIS, 0.2, 0, 0) // Lean in\n .build()\n // Lift: hoist up\n .keyframe(0.2, \"ease-out\")\n .rotate(BoneName.SHOULDER_L, 0.9, 0.2, -0.3) // Arms lift high\n .rotate(BoneName.ELBOW_L, 0, 0, -0.8)\n .rotate(BoneName.SHOULDER_R, 0.9, -0.2, 0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 0.8)\n .rotate(BoneName.KNEE_L, -0.1, 0, 0) // Standing tall\n .rotate(BoneName.KNEE_R, -0.1, 0, 0)\n .rotate(BoneName.PELVIS, -0.3, 0, 0) // Lean back\n .rotate(BoneName.SPINE_UPPER, -0.2, 0, 0) // Arched back\n .position(BoneName.PELVIS, 0, 0.1, 0) // Slight rise\n .build()\n // Slam: drive down\n .keyframe(0.35, \"ease-in\")\n .rotate(BoneName.SHOULDER_L, 0.3, 0.3, -0.6) // Arms drive down\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.SHOULDER_R, 0.3, -0.3, 0.6)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.4)\n .rotate(BoneName.KNEE_L, -0.6, 0, 0) // Deep squat\n .rotate(BoneName.KNEE_R, -0.6, 0, 0)\n .rotate(BoneName.PELVIS, 0.4, 0, 0) // Lean forward\n .rotate(BoneName.SPINE_UPPER, 0.3, 0, 0) // Forward bend\n .rotate(BoneName.SPINE_MIDDLE, 0.2, 0, 0)\n .position(BoneName.PELVIS, 0, -0.15, 0.2) // Low position\n .build()\n // Recovery\n .keyframe(0.5, \"ease-in\")\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.2, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .build()\n .build();\n\n/**\n * Wrist lock animation (손목꺾기 - 손목관절기)\n *\n * Joint lock targeting the wrist. Painful control technique.\n *\n * Animation phases:\n * 1. Grab (0.0s): Secure opponent's wrist\n * 2. Control (0.15s): Two-hand grip\n * 3. Lock (0.3s): Apply rotational pressure\n * 4. Hold (0.4s): Maintain lock position\n *\n * Duration: 400ms\n *\n * @korean 손목꺾기애니메이션\n */\nexport const WRIST_LOCK_ANIMATION = AnimationBuilder.create(\"wrist_lock\")\n .withKoreanName(\"손목꺾기\")\n .withDuration(0.4)\n .withType(\"attack\")\n // Grab: secure wrist\n .keyframe(0.0, \"linear\")\n .rotate(BoneName.SHOULDER_R, 0.4, 0, 0.2) // Reach forward\n .rotate(BoneName.ELBOW_R, 0, 0, 0.6) // Arm extended\n .rotate(BoneName.WRIST_R, 0, -0.3, 0) // Palm faces opponent\n .rotate(BoneName.SHOULDER_L, 0.3, 0.2, -0.1) // Support hand\n .rotate(BoneName.ELBOW_L, 0, 0, -0.8)\n .rotate(BoneName.KNEE_L, -0.3, 0, 0) // Stable stance\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .build()\n // Control: two-hand grip\n .keyframe(0.15, \"ease-out\")\n .rotate(BoneName.SHOULDER_R, 0.2, 0.3, 0.4) // Hands come together\n .rotate(BoneName.ELBOW_R, 0, 0, 1.0)\n .rotate(BoneName.WRIST_R, 0.3, -0.4, 0.2) // Grip position\n .rotate(BoneName.SHOULDER_L, 0.3, 0.4, -0.3) // Both hands on wrist\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.WRIST_L, -0.2, 0.3, 0)\n .rotate(BoneName.PELVIS, 0, 0.2, 0) // Body turns\n .rotate(BoneName.SPINE_UPPER, 0, 0.15, 0)\n .build()\n // Lock: apply pressure\n .keyframe(0.3, \"ease-in\")\n .rotate(BoneName.SHOULDER_R, -0.1, 0.5, 0.6) // Rotate wrist down\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .rotate(BoneName.WRIST_R, 0.5, -0.5, 0.4) // Twist\n .rotate(BoneName.SHOULDER_L, 0.1, 0.6, -0.4) // Counter-pressure\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.WRIST_L, -0.3, 0.4, -0.2)\n .rotate(BoneName.PELVIS, 0, 0.4, 0) // Body supports lock\n .rotate(BoneName.SPINE_UPPER, 0.1, 0.3, 0) // Lean in\n .rotate(BoneName.KNEE_L, -0.4, 0, 0) // Lower for control\n .build()\n // Hold: maintain position\n .keyframe(0.4, \"linear\")\n .rotate(BoneName.SHOULDER_R, -0.1, 0.5, 0.6)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .rotate(BoneName.WRIST_R, 0.5, -0.5, 0.4)\n .rotate(BoneName.SHOULDER_L, 0.1, 0.6, -0.4)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.WRIST_L, -0.3, 0.4, -0.2)\n .rotate(BoneName.PELVIS, 0, 0.4, 0)\n .rotate(BoneName.SPINE_UPPER, 0.1, 0.3, 0)\n .rotate(BoneName.KNEE_L, -0.4, 0, 0)\n .build()\n .build();\n\n/**\n * Arm bar animation (팔꺾기 - 팔관절기)\n *\n * Arm lock submission technique. Hyperextends the elbow.\n *\n * Animation phases:\n * 1. Grab (0.0s): Secure opponent's arm\n * 2. Control (0.2s): Pull arm across body\n * 3. Drop (0.35s): Go to ground position\n * 4. Lock (0.5s): Apply elbow pressure\n *\n * Duration: 500ms\n *\n * @korean 팔꺾기애니메이션\n */\nexport const ARM_BAR_ANIMATION = AnimationBuilder.create(\"arm_bar\")\n .withKoreanName(\"팔꺾기\")\n .withDuration(0.5)\n .withType(\"attack\")\n // Grab: secure arm\n .keyframe(0.0, \"linear\")\n .rotate(BoneName.SHOULDER_R, 0.5, 0.3, 0.3) // Reach for arm\n .rotate(BoneName.ELBOW_R, 0, 0, 0.8)\n .rotate(BoneName.SHOULDER_L, 0.4, -0.2, -0.2) // Support hand\n .rotate(BoneName.ELBOW_L, 0, 0, -0.9)\n .rotate(BoneName.KNEE_L, -0.3, 0, 0)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .build()\n // Control: pull across\n .keyframe(0.2, \"ease-out\")\n .rotate(BoneName.SHOULDER_R, 0.2, 0.6, 0.5) // Arms wrap arm\n .rotate(BoneName.ELBOW_R, 0, 0, 1.4)\n .rotate(BoneName.SHOULDER_L, 0.3, 0.5, -0.4)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.3)\n .rotate(BoneName.PELVIS, 0.2, 0.5, 0) // Turn body\n .rotate(BoneName.SPINE_UPPER, 0.1, 0.4, 0)\n .build()\n // Drop: go to ground\n .keyframe(0.35, \"ease-in\")\n .rotate(BoneName.SHOULDER_R, -0.2, 0.8, 0.7)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5)\n .rotate(BoneName.SHOULDER_L, 0.1, 0.7, -0.5)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.5)\n .rotate(BoneName.PELVIS, 0.8, 0.3, 0) // Lean back for drop\n .rotate(BoneName.SPINE_UPPER, 0.6, 0.2, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.4, 0.1, 0)\n .rotate(BoneName.HIP_R, 1.2, 0, 0.3) // Legs go up\n .rotate(BoneName.KNEE_R, -0.5, 0, 0)\n .rotate(BoneName.HIP_L, 1.0, 0, -0.2)\n .rotate(BoneName.KNEE_L, -0.4, 0, 0)\n .position(BoneName.PELVIS, 0, -0.3, 0) // Lower position\n .build()\n // Lock: apply pressure\n .keyframe(0.5, \"linear\")\n .rotate(BoneName.SHOULDER_R, -0.3, 0.9, 0.8)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .rotate(BoneName.SHOULDER_L, 0, 0.8, -0.6)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.PELVIS, 1.0, 0.2, 0) // Full recline\n .rotate(BoneName.SPINE_UPPER, 0.7, 0.15, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.5, 0.1, 0)\n .rotate(BoneName.HIP_R, 1.4, 0, 0.4) // Legs over opponent\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .rotate(BoneName.HIP_L, 1.2, 0, -0.3)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .position(BoneName.PELVIS, 0, -0.4, -0.1) // Ground position\n .build()\n .build();\n\n/**\n * Counter strike animation (반격 - 반격타격)\n *\n * Quick counter-attack after parrying. Exploits opponent's opening.\n *\n * Animation phases:\n * 1. Parry (0.0s): Deflect incoming attack\n * 2. Open (0.08s): Create opening\n * 3. Strike (0.15s): Fast counter punch\n * 4. Recovery (0.25s): Return to guard\n *\n * Duration: 250ms\n *\n * @korean 반격애니메이션\n */\nexport const COUNTER_STRIKE_ANIMATION = AnimationBuilder.create(\n \"counter_strike\",\n)\n .withKoreanName(\"반격\")\n .withDuration(0.25)\n .withType(\"attack\")\n // Parry: deflect\n .keyframe(0.0, \"linear\")\n .rotate(BoneName.SHOULDER_L, 0.2, 0.5, -0.6) // Parrying arm\n .rotate(BoneName.ELBOW_L, 0, 0, -0.9)\n .rotate(BoneName.WRIST_L, 0, 0.3, 0) // Palm out\n .rotate(BoneName.SHOULDER_R, 0.1, 0, -0.2) // Counter arm ready\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5)\n .rotate(BoneName.PELVIS, 0, -0.2, 0) // Slight turn\n .rotate(BoneName.KNEE_L, -0.25, 0, 0)\n .rotate(BoneName.KNEE_R, -0.3, 0, 0)\n .build()\n // Open: create gap\n .keyframe(0.08, \"ease-out\")\n .rotate(BoneName.SHOULDER_L, 0.3, 0.7, -0.5) // Push away\n .rotate(BoneName.ELBOW_L, 0, 0, -0.7)\n .rotate(BoneName.SHOULDER_R, 0.2, 0, -0.3) // Load counter\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .rotate(BoneName.SPINE_UPPER, 0, -0.2, 0)\n .rotate(BoneName.PELVIS, 0, -0.15, 0)\n .build()\n // Strike: counter punch\n .keyframe(0.15, \"ease-out\")\n .rotate(BoneName.SHOULDER_R, -0.6, 0, 0.4) // Fast extension\n .rotate(BoneName.ELBOW_R, 0, 0, 0.1) // Full extend\n .rotate(BoneName.WRIST_R, 0, 0, -0.2)\n .rotate(BoneName.SHOULDER_L, 0.1, 0.3, -0.4) // Guard returns\n .rotate(BoneName.ELBOW_L, 0, 0, -1.2)\n .rotate(BoneName.SPINE_UPPER, 0, 0.35, 0) // Torso rotates\n .rotate(BoneName.SPINE_MIDDLE, 0, 0.25, 0)\n .rotate(BoneName.PELVIS, 0, 0.2, 0)\n .build()\n // Recovery: guard\n .keyframe(0.25, \"ease-in\")\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.8)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.8)\n .rotate(BoneName.SPINE_UPPER, 0, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.WRIST_R, 0, 0, 0)\n .build()\n .build();\n\n/**\n * All skeletal animations mapped by name\n *\n * Includes attack, defense, movement, and idle animations.\n *\n * @korean 모든골격애니메이션\n */\nexport const ATTACK_ANIMATIONS = new Map<string, SkeletalAnimation>([\n [\"jab\", JAB_ANIMATION],\n [\"cross\", CROSS_ANIMATION],\n [\"hook\", HOOK_ANIMATION],\n [\"front_kick\", FRONT_KICK_ANIMATION],\n [\"roundhouse_kick\", ROUNDHOUSE_KICK_ANIMATION],\n [\"side_kick\", SIDE_KICK_ANIMATION],\n [\"axe_kick\", AXE_KICK_ANIMATION],\n [\"back_kick\", BACK_KICK_ANIMATION],\n [\"tornado_kick\", TORNADO_KICK_ANIMATION],\n [\"jumping_kick\", JUMPING_KICK_ANIMATION],\n [\"low_kick\", LOW_KICK_ANIMATION],\n [\"elbow_strike\", ELBOW_STRIKE_ANIMATION],\n [\"elbow_uppercut\", ELBOW_UPPERCUT_ANIMATION],\n [\"knee_strike\", KNEE_STRIKE_ANIMATION],\n [\"block\", BLOCK_ANIMATION],\n [\"sweep\", SWEEP_ANIMATION],\n [\"throw\", THROW_ANIMATION],\n [\"slam\", SLAM_ANIMATION],\n [\"grapple\", GRAPPLE_ANIMATION],\n [\"wrist_lock\", WRIST_LOCK_ANIMATION],\n [\"arm_bar\", ARM_BAR_ANIMATION],\n [\"counter_attack\", COUNTER_ATTACK_ANIMATION],\n [\"counter_strike\", COUNTER_STRIKE_ANIMATION],\n [\"palm_strike\", PALM_STRIKE_ANIMATION],\n [\"walk\", WALK_ANIMATION],\n [\"idle_stance\", IDLE_STANCE_ANIMATION],\n [\"forward_dash\", FORWARD_DASH_ANIMATION],\n [\"backward_retreat\", BACKWARD_RETREAT_ANIMATION],\n [\"side_step\", SIDE_STEP_ANIMATION],\n]);\n\n/**\n * Get animation by name\n *\n * @param name - Animation name\n * @returns Skeletal animation or undefined\n *\n * @korean 애니메이션가져오기\n * @deprecated Use getAnimation from AnimationRegistry instead for full animation support\n */\nexport const getAnimation = (name: string): SkeletalAnimation | undefined => {\n return ATTACK_ANIMATIONS.get(name);\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Basic Animations Module
|
|
3
|
+
*
|
|
4
|
+
* Core locomotion and state animations: Idle, Run, Walk, Fall
|
|
5
|
+
* These are the foundational animations for character states.
|
|
6
|
+
* Uses MartialArtsAnimationBuilder for readable, martial arts expert-friendly code.
|
|
7
|
+
*
|
|
8
|
+
* 기본 애니메이션 모듈 - 대기, 달리기, 걷기, 낙법
|
|
9
|
+
*
|
|
10
|
+
* @module systems/animation/BasicAnimations
|
|
11
|
+
* @korean 기본애니메이션
|
|
12
|
+
*/
|
|
13
|
+
import type { SkeletalAnimation } from "../../../types/skeletal";
|
|
14
|
+
/**
|
|
15
|
+
* Idle Breathing - 대기호흡
|
|
16
|
+
*
|
|
17
|
+
* Subtle breathing animation while standing ready.
|
|
18
|
+
* Looping idle state with slight body movement.
|
|
19
|
+
* Uses neutral balanced stance width (1.1x shoulder width).
|
|
20
|
+
*
|
|
21
|
+
* @korean 대기호흡애니메이션
|
|
22
|
+
*/
|
|
23
|
+
export declare const IDLE_ANIMATION: SkeletalAnimation;
|
|
24
|
+
/**
|
|
25
|
+
* Run Cycle - 달리기
|
|
26
|
+
*
|
|
27
|
+
* Full running gait cycle with arm swing and leg drive.
|
|
28
|
+
* Looping animation for sprint movement.
|
|
29
|
+
*
|
|
30
|
+
* @korean 달리기애니메이션
|
|
31
|
+
*/
|
|
32
|
+
export declare const RUN_ANIMATION: SkeletalAnimation;
|
|
33
|
+
/**
|
|
34
|
+
* Walk Cycle - 걷기
|
|
35
|
+
*
|
|
36
|
+
* Full walking gait cycle with natural arm swing.
|
|
37
|
+
* Looping animation for walking movement.
|
|
38
|
+
* Uses MartialArtsAnimationBuilder (migrated from AnimationBuilder).
|
|
39
|
+
*
|
|
40
|
+
* @korean 걷기애니메이션
|
|
41
|
+
*/
|
|
42
|
+
export declare const WALK_ANIMATION: SkeletalAnimation;
|
|
43
|
+
/**
|
|
44
|
+
* Fall Forward - 전방낙법
|
|
45
|
+
*
|
|
46
|
+
* Forward fall animation (전방낙법 - Jeonbang Nakbeop).
|
|
47
|
+
* Hands brace, body rotates to prone position.
|
|
48
|
+
*
|
|
49
|
+
* @korean 전방낙법애니메이션
|
|
50
|
+
*/
|
|
51
|
+
export declare const FALL_FORWARD_ANIMATION: SkeletalAnimation;
|
|
52
|
+
/**
|
|
53
|
+
* Fall Backward - 후방낙법
|
|
54
|
+
*
|
|
55
|
+
* Backward fall animation (후방낙법 - Hubang Nakbeop).
|
|
56
|
+
* Sit down, back impact, arms slap ground.
|
|
57
|
+
*
|
|
58
|
+
* @korean 후방낙법애니메이션
|
|
59
|
+
*/
|
|
60
|
+
export declare const FALL_BACKWARD_ANIMATION: SkeletalAnimation;
|
|
61
|
+
/**
|
|
62
|
+
* Fall Side Left - 좌측낙법
|
|
63
|
+
*
|
|
64
|
+
* Side fall to the left (측방낙법 - Cheukbang Nakbeop).
|
|
65
|
+
* Shoulder/hip impact, arm slaps ground.
|
|
66
|
+
*
|
|
67
|
+
* @korean 좌측낙법애니메이션
|
|
68
|
+
*/
|
|
69
|
+
export declare const FALL_SIDE_LEFT_ANIMATION: SkeletalAnimation;
|
|
70
|
+
/**
|
|
71
|
+
* Fall Side Right - 우측낙법
|
|
72
|
+
*
|
|
73
|
+
* Side fall to the right (측방낙법 - Cheukbang Nakbeop).
|
|
74
|
+
* Mirror of left side fall.
|
|
75
|
+
*
|
|
76
|
+
* @korean 우측낙법애니메이션
|
|
77
|
+
*/
|
|
78
|
+
export declare const FALL_SIDE_RIGHT_ANIMATION: SkeletalAnimation;
|
|
79
|
+
/**
|
|
80
|
+
* Map of all basic animations for easy access
|
|
81
|
+
* 기본 애니메이션 맵
|
|
82
|
+
*/
|
|
83
|
+
export declare const BASIC_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation>;
|
|
84
|
+
//# sourceMappingURL=BasicAnimations.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BasicAnimations.d.ts","sourceRoot":"","sources":["../../../../src/systems/animation/catalogs/BasicAnimations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAoB1D;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,EAAE,iBA8EjB,CAAC;AAMb;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,iBA6FhB,CAAC;AAEb;;;;;;;;GAQG;AACH,eAAO,MAAM,cAAc,EAAE,iBA6FjB,CAAC;AAMb;;;;;;;GAOG;AACH,eAAO,MAAM,sBAAsB,EAAE,iBAiDzB,CAAC;AAEb;;;;;;;GAOG;AACH,eAAO,MAAM,uBAAuB,EAAE,iBA0D1B,CAAC;AAEb;;;;;;;GAOG;AACH,eAAO,MAAM,wBAAwB,EAAE,iBAkD3B,CAAC;AAEb;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,EAAE,iBAkD5B,CAAC;AAMb;;;GAGG;AACH,eAAO,MAAM,gBAAgB,EAAE,WAAW,CAAC,MAAM,EAAE,iBAAiB,CAenE,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
import { BoneName } from "../../../types/skeletal.js";
|
|
2
|
+
import { MartialArtsAnimationBuilder } from "../builders/MartialArtsAnimationBuilder.js";
|
|
3
|
+
//#region src/systems/animation/catalogs/BasicAnimations.ts
|
|
4
|
+
/**
|
|
5
|
+
* Default shoulder width for basic animations (non-stance-specific)
|
|
6
|
+
* Uses a neutral balanced width (1.1x) for general idle/movement
|
|
7
|
+
* @korean 기본어깨너비
|
|
8
|
+
*/
|
|
9
|
+
var DEFAULT_SHOULDER_WIDTH_CM = 46;
|
|
10
|
+
var DEFAULT_STANCE_WIDTH_MULTIPLIER = 1.1;
|
|
11
|
+
/**
|
|
12
|
+
* Idle Breathing - 대기호흡
|
|
13
|
+
*
|
|
14
|
+
* Subtle breathing animation while standing ready.
|
|
15
|
+
* Looping idle state with slight body movement.
|
|
16
|
+
* Uses neutral balanced stance width (1.1x shoulder width).
|
|
17
|
+
*
|
|
18
|
+
* @korean 대기호흡애니메이션
|
|
19
|
+
*/
|
|
20
|
+
var IDLE_ANIMATION = MartialArtsAnimationBuilder.create("idle", "대기").asIdle(2, true).at(0, "linear").rotate(BoneName.PELVIS, .04, 0, 0).rotate(BoneName.KNEE_L, -.18, 0, 0).rotate(BoneName.KNEE_R, -.18, 0, 0).rotate(BoneName.SPINE_LOWER, .02, 0, 0).rotate(BoneName.SPINE_UPPER, .04, 0, 0).rotate(BoneName.SHOULDER_L, .12, 0, -.22).rotate(BoneName.SHOULDER_R, .12, 0, .22).rotate(BoneName.ELBOW_L, 0, 0, -.45).rotate(BoneName.ELBOW_R, 0, 0, .45).rotate(BoneName.HEAD, -.02, 0, 0).position(BoneName.PELVIS, 0, 0, 0).done().withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM).at(.5, "ease-in-out").rotate(BoneName.PELVIS, .05, 0, .015).rotate(BoneName.KNEE_L, -.16, 0, 0).rotate(BoneName.KNEE_R, -.2, 0, 0).rotate(BoneName.SPINE_LOWER, .04, 0, .01).rotate(BoneName.SPINE_UPPER, .09, 0, .01).rotate(BoneName.SHOULDER_L, .14, 0, -.24).rotate(BoneName.SHOULDER_R, .14, 0, .24).rotate(BoneName.ELBOW_L, 0, 0, -.48).rotate(BoneName.ELBOW_R, 0, 0, .48).rotate(BoneName.HEAD, -.01, .02, 0).position(BoneName.PELVIS, 0, .025, 0).done().withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM).at(1, "ease-in-out").rotate(BoneName.PELVIS, .06, 0, 0).rotate(BoneName.KNEE_L, -.15, 0, 0).rotate(BoneName.KNEE_R, -.15, 0, 0).rotate(BoneName.SPINE_LOWER, .05, 0, 0).rotate(BoneName.SPINE_UPPER, .12, 0, 0).rotate(BoneName.SHOULDER_L, .16, 0, -.26).rotate(BoneName.SHOULDER_R, .16, 0, .26).rotate(BoneName.ELBOW_L, .02, 0, -.44).rotate(BoneName.ELBOW_R, .02, 0, .44).rotate(BoneName.HEAD, 0, 0, 0).position(BoneName.PELVIS, 0, .035, 0).done().withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM).at(1.5, "ease-in-out").rotate(BoneName.PELVIS, .05, 0, -.015).rotate(BoneName.KNEE_L, -.2, 0, 0).rotate(BoneName.KNEE_R, -.16, 0, 0).rotate(BoneName.SPINE_LOWER, .03, 0, -.01).rotate(BoneName.SPINE_UPPER, .06, 0, -.01).rotate(BoneName.SHOULDER_L, .13, 0, -.23).rotate(BoneName.SHOULDER_R, .13, 0, .23).rotate(BoneName.ELBOW_L, 0, 0, -.46).rotate(BoneName.ELBOW_R, 0, 0, .46).rotate(BoneName.HEAD, -.01, -.02, 0).position(BoneName.PELVIS, 0, .01, 0).done().withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM).at(2, "ease-in-out").rotate(BoneName.PELVIS, .04, 0, 0).rotate(BoneName.KNEE_L, -.18, 0, 0).rotate(BoneName.KNEE_R, -.18, 0, 0).rotate(BoneName.SPINE_LOWER, .02, 0, 0).rotate(BoneName.SPINE_UPPER, .04, 0, 0).rotate(BoneName.SHOULDER_L, .12, 0, -.22).rotate(BoneName.SHOULDER_R, .12, 0, .22).rotate(BoneName.ELBOW_L, 0, 0, -.45).rotate(BoneName.ELBOW_R, 0, 0, .45).rotate(BoneName.HEAD, -.02, 0, 0).position(BoneName.PELVIS, 0, 0, 0).done().withFootWidth(DEFAULT_STANCE_WIDTH_MULTIPLIER, DEFAULT_SHOULDER_WIDTH_CM).build();
|
|
21
|
+
/**
|
|
22
|
+
* Run Cycle - 달리기
|
|
23
|
+
*
|
|
24
|
+
* Full running gait cycle with arm swing and leg drive.
|
|
25
|
+
* Looping animation for sprint movement.
|
|
26
|
+
*
|
|
27
|
+
* @korean 달리기애니메이션
|
|
28
|
+
*/
|
|
29
|
+
var RUN_ANIMATION = MartialArtsAnimationBuilder.create("run", "달리기").asMovement(.5, true).at(0, "ease-out").rotate(BoneName.PELVIS, .18, .1, .03).rotate(BoneName.HIP_L, -.55, 0, 0).rotate(BoneName.KNEE_L, -.25, 0, 0).rotate(BoneName.FOOT_L, .25, 0, 0).rotate(BoneName.HIP_R, .65, 0, 0).rotate(BoneName.KNEE_R, -1, 0, 0).rotate(BoneName.FOOT_R, -.45, 0, 0).rotate(BoneName.SHOULDER_L, .55, 0, -.1).rotate(BoneName.ELBOW_L, 0, 0, -1).rotate(BoneName.SHOULDER_R, -.65, 0, .1).rotate(BoneName.ELBOW_R, 0, 0, .6).rotate(BoneName.SPINE_LOWER, .12, -.1, 0).rotate(BoneName.SPINE_UPPER, .08, -.06, 0).rotate(BoneName.HEAD, -.06, .04, 0).position(BoneName.PELVIS, 0, .035, 0).done().at(.125, "linear").rotate(BoneName.PELVIS, .14, 0, 0).rotate(BoneName.HIP_L, .05, 0, 0).rotate(BoneName.KNEE_L, -.9, 0, 0).rotate(BoneName.FOOT_L, .05, 0, 0).rotate(BoneName.HIP_R, .35, 0, 0).rotate(BoneName.KNEE_R, -.5, 0, 0).rotate(BoneName.FOOT_R, .15, 0, 0).rotate(BoneName.SHOULDER_L, .25, 0, -.08).rotate(BoneName.ELBOW_L, 0, 0, -.8).rotate(BoneName.SHOULDER_R, -.35, 0, .08).rotate(BoneName.ELBOW_R, 0, 0, .7).rotate(BoneName.SPINE_LOWER, .1, 0, 0).rotate(BoneName.SPINE_UPPER, .06, 0, 0).rotate(BoneName.HEAD, -.05, 0, 0).position(BoneName.PELVIS, 0, .07, 0).done().at(.25, "ease-out").rotate(BoneName.PELVIS, .18, -.1, -.03).rotate(BoneName.HIP_R, -.55, 0, 0).rotate(BoneName.KNEE_R, -.25, 0, 0).rotate(BoneName.FOOT_R, .25, 0, 0).rotate(BoneName.HIP_L, .65, 0, 0).rotate(BoneName.KNEE_L, -1, 0, 0).rotate(BoneName.FOOT_L, -.45, 0, 0).rotate(BoneName.SHOULDER_R, .55, 0, .1).rotate(BoneName.ELBOW_R, 0, 0, 1).rotate(BoneName.SHOULDER_L, -.65, 0, -.1).rotate(BoneName.ELBOW_L, 0, 0, -.6).rotate(BoneName.SPINE_LOWER, .12, .1, 0).rotate(BoneName.SPINE_UPPER, .08, .06, 0).rotate(BoneName.HEAD, -.06, -.04, 0).position(BoneName.PELVIS, 0, .035, 0).done().at(.375, "linear").rotate(BoneName.PELVIS, .14, 0, 0).rotate(BoneName.HIP_R, .05, 0, 0).rotate(BoneName.KNEE_R, -.9, 0, 0).rotate(BoneName.FOOT_R, .05, 0, 0).rotate(BoneName.HIP_L, .35, 0, 0).rotate(BoneName.KNEE_L, -.5, 0, 0).rotate(BoneName.FOOT_L, .15, 0, 0).rotate(BoneName.SHOULDER_R, .25, 0, .08).rotate(BoneName.ELBOW_R, 0, 0, .8).rotate(BoneName.SHOULDER_L, -.35, 0, -.08).rotate(BoneName.ELBOW_L, 0, 0, -.7).rotate(BoneName.SPINE_LOWER, .1, 0, 0).rotate(BoneName.SPINE_UPPER, .06, 0, 0).rotate(BoneName.HEAD, -.05, 0, 0).position(BoneName.PELVIS, 0, .07, 0).done().at(.5, "ease-out").rotate(BoneName.PELVIS, .18, .1, .03).rotate(BoneName.HIP_L, -.55, 0, 0).rotate(BoneName.KNEE_L, -.25, 0, 0).rotate(BoneName.FOOT_L, .25, 0, 0).rotate(BoneName.HIP_R, .65, 0, 0).rotate(BoneName.KNEE_R, -1, 0, 0).rotate(BoneName.FOOT_R, -.45, 0, 0).rotate(BoneName.SHOULDER_L, .55, 0, -.1).rotate(BoneName.ELBOW_L, 0, 0, -1).rotate(BoneName.SHOULDER_R, -.65, 0, .1).rotate(BoneName.ELBOW_R, 0, 0, .6).rotate(BoneName.SPINE_LOWER, .12, -.1, 0).rotate(BoneName.SPINE_UPPER, .08, -.06, 0).rotate(BoneName.HEAD, -.06, .04, 0).position(BoneName.PELVIS, 0, .035, 0).done().build();
|
|
30
|
+
/**
|
|
31
|
+
* Walk Cycle - 걷기
|
|
32
|
+
*
|
|
33
|
+
* Full walking gait cycle with natural arm swing.
|
|
34
|
+
* Looping animation for walking movement.
|
|
35
|
+
* Uses MartialArtsAnimationBuilder (migrated from AnimationBuilder).
|
|
36
|
+
*
|
|
37
|
+
* @korean 걷기애니메이션
|
|
38
|
+
*/
|
|
39
|
+
var WALK_ANIMATION = MartialArtsAnimationBuilder.create("walk", "걷기").asMovement(.8, true).at(0, "ease-out").rotate(BoneName.PELVIS, .12, .08, .02).rotate(BoneName.HIP_L, -.35, 0, 0).rotate(BoneName.KNEE_L, -.15, 0, 0).rotate(BoneName.FOOT_L, .15, 0, 0).rotate(BoneName.HIP_R, .5, 0, 0).rotate(BoneName.KNEE_R, -.25, 0, 0).rotate(BoneName.FOOT_R, -.35, 0, 0).rotate(BoneName.SHOULDER_L, .4, 0, -.1).rotate(BoneName.ELBOW_L, 0, 0, -.5).rotate(BoneName.SHOULDER_R, -.5, 0, .1).rotate(BoneName.ELBOW_R, 0, 0, .55).rotate(BoneName.SPINE_LOWER, .04, -.06, 0).rotate(BoneName.SPINE_UPPER, .02, -.04, 0).rotate(BoneName.HEAD, 0, .03, 0).position(BoneName.PELVIS, 0, .025, 0).done().at(.2, "linear").rotate(BoneName.PELVIS, .06, 0, 0).rotate(BoneName.HIP_L, .05, 0, 0).rotate(BoneName.KNEE_L, -.6, 0, 0).rotate(BoneName.FOOT_L, .1, 0, 0).rotate(BoneName.HIP_R, .1, 0, 0).rotate(BoneName.KNEE_R, -.55, 0, 0).rotate(BoneName.FOOT_R, .15, 0, 0).rotate(BoneName.SHOULDER_L, .1, 0, -.08).rotate(BoneName.ELBOW_L, 0, 0, -.35).rotate(BoneName.SHOULDER_R, -.15, 0, .08).rotate(BoneName.ELBOW_R, 0, 0, .4).rotate(BoneName.SPINE_LOWER, .03, 0, 0).rotate(BoneName.SPINE_UPPER, .02, 0, 0).rotate(BoneName.HEAD, 0, 0, 0).position(BoneName.PELVIS, 0, .04, 0).done().at(.4, "ease-out").rotate(BoneName.PELVIS, .12, -.08, -.02).rotate(BoneName.HIP_R, -.35, 0, 0).rotate(BoneName.KNEE_R, -.15, 0, 0).rotate(BoneName.FOOT_R, .15, 0, 0).rotate(BoneName.HIP_L, .5, 0, 0).rotate(BoneName.KNEE_L, -.25, 0, 0).rotate(BoneName.FOOT_L, -.35, 0, 0).rotate(BoneName.SHOULDER_R, .4, 0, .1).rotate(BoneName.ELBOW_R, 0, 0, .5).rotate(BoneName.SHOULDER_L, -.5, 0, -.1).rotate(BoneName.ELBOW_L, 0, 0, -.55).rotate(BoneName.SPINE_LOWER, .04, .06, 0).rotate(BoneName.SPINE_UPPER, .02, .04, 0).rotate(BoneName.HEAD, 0, -.03, 0).position(BoneName.PELVIS, 0, .025, 0).done().at(.6, "linear").rotate(BoneName.PELVIS, .06, 0, 0).rotate(BoneName.HIP_R, .05, 0, 0).rotate(BoneName.KNEE_R, -.6, 0, 0).rotate(BoneName.FOOT_R, .1, 0, 0).rotate(BoneName.HIP_L, .1, 0, 0).rotate(BoneName.KNEE_L, -.55, 0, 0).rotate(BoneName.FOOT_L, .15, 0, 0).rotate(BoneName.SHOULDER_R, .1, 0, .08).rotate(BoneName.ELBOW_R, 0, 0, .35).rotate(BoneName.SHOULDER_L, -.15, 0, -.08).rotate(BoneName.ELBOW_L, 0, 0, -.4).rotate(BoneName.SPINE_LOWER, .03, 0, 0).rotate(BoneName.SPINE_UPPER, .02, 0, 0).rotate(BoneName.HEAD, 0, 0, 0).position(BoneName.PELVIS, 0, .04, 0).done().at(.8, "ease-out").rotate(BoneName.PELVIS, .12, .08, .02).rotate(BoneName.HIP_L, -.35, 0, 0).rotate(BoneName.KNEE_L, -.15, 0, 0).rotate(BoneName.FOOT_L, .15, 0, 0).rotate(BoneName.HIP_R, .5, 0, 0).rotate(BoneName.KNEE_R, -.25, 0, 0).rotate(BoneName.FOOT_R, -.35, 0, 0).rotate(BoneName.SHOULDER_L, .4, 0, -.1).rotate(BoneName.ELBOW_L, 0, 0, -.5).rotate(BoneName.SHOULDER_R, -.5, 0, .1).rotate(BoneName.ELBOW_R, 0, 0, .55).rotate(BoneName.SPINE_LOWER, .04, -.06, 0).rotate(BoneName.SPINE_UPPER, .02, -.04, 0).rotate(BoneName.HEAD, 0, .03, 0).position(BoneName.PELVIS, 0, .025, 0).done().build();
|
|
40
|
+
/**
|
|
41
|
+
* Fall Forward - 전방낙법
|
|
42
|
+
*
|
|
43
|
+
* Forward fall animation (전방낙법 - Jeonbang Nakbeop).
|
|
44
|
+
* Hands brace, body rotates to prone position.
|
|
45
|
+
*
|
|
46
|
+
* @korean 전방낙법애니메이션
|
|
47
|
+
*/
|
|
48
|
+
var FALL_FORWARD_ANIMATION = MartialArtsAnimationBuilder.create("fall_forward", "전방낙법").asMovement(.4, false).at(0, "linear").rotate(BoneName.PELVIS, .3, 0, 0).rotate(BoneName.SPINE_LOWER, .2, 0, 0).rotate(BoneName.SPINE_UPPER, .3, 0, 0).rotate(BoneName.KNEE_L, -.3, 0, 0).rotate(BoneName.KNEE_R, -.3, 0, 0).done().at(.1, "ease-in").rotate(BoneName.PELVIS, .5, 0, 0).rotate(BoneName.SPINE_LOWER, .4, 0, 0).rotate(BoneName.SPINE_UPPER, .5, 0, 0).rotate(BoneName.KNEE_L, -1.2, 0, 0).rotate(BoneName.KNEE_R, -1.2, 0, 0).rotate(BoneName.SHOULDER_L, .8, 0, -.3).rotate(BoneName.SHOULDER_R, .8, 0, .3).rotate(BoneName.ELBOW_L, 0, 0, -.3).rotate(BoneName.ELBOW_R, 0, 0, .3).position(BoneName.PELVIS, 0, -.2, 0).done().at(.25, "ease-in").rotate(BoneName.PELVIS, .8, 0, 0).rotate(BoneName.SPINE_LOWER, .6, 0, 0).rotate(BoneName.SPINE_UPPER, .7, 0, 0).rotate(BoneName.SHOULDER_L, 1.2, 0, -.2).rotate(BoneName.SHOULDER_R, 1.2, 0, .2).rotate(BoneName.ELBOW_L, 0, 0, -.2).rotate(BoneName.ELBOW_R, 0, 0, .2).rotate(BoneName.HIP_L, .3, 0, 0).rotate(BoneName.HIP_R, .3, 0, 0).position(BoneName.PELVIS, 0, -.4, .2).done().at(.4, "ease-out").rotate(BoneName.PELVIS, 1.57, 0, 0).rotate(BoneName.SPINE_LOWER, .1, 0, 0).rotate(BoneName.SPINE_UPPER, -.1, 0, 0).rotate(BoneName.HEAD, -.3, 0, 0).rotate(BoneName.SHOULDER_L, .3, 0, -.8).rotate(BoneName.SHOULDER_R, .3, 0, .8).rotate(BoneName.ELBOW_L, 0, 0, -1).rotate(BoneName.ELBOW_R, 0, 0, 1).rotate(BoneName.HIP_L, 0, 0, 0).rotate(BoneName.HIP_R, 0, 0, 0).rotate(BoneName.KNEE_L, 0, 0, 0).rotate(BoneName.KNEE_R, 0, 0, 0).position(BoneName.PELVIS, 0, -.8, .3).done().build();
|
|
49
|
+
/**
|
|
50
|
+
* Fall Backward - 후방낙법
|
|
51
|
+
*
|
|
52
|
+
* Backward fall animation (후방낙법 - Hubang Nakbeop).
|
|
53
|
+
* Sit down, back impact, arms slap ground.
|
|
54
|
+
*
|
|
55
|
+
* @korean 후방낙법애니메이션
|
|
56
|
+
*/
|
|
57
|
+
var FALL_BACKWARD_ANIMATION = MartialArtsAnimationBuilder.create("fall_backward", "후방낙법").asMovement(.5, false).at(0, "linear").rotate(BoneName.PELVIS, -.2, 0, 0).rotate(BoneName.SPINE_LOWER, -.1, 0, 0).rotate(BoneName.SPINE_UPPER, -.2, 0, 0).rotate(BoneName.KNEE_L, -.2, 0, 0).rotate(BoneName.KNEE_R, -.2, 0, 0).done().at(.12, "ease-in").rotate(BoneName.PELVIS, -.4, 0, 0).rotate(BoneName.SPINE_LOWER, -.3, 0, 0).rotate(BoneName.SPINE_UPPER, -.4, 0, 0).rotate(BoneName.KNEE_L, -.8, 0, 0).rotate(BoneName.KNEE_R, -.8, 0, 0).rotate(BoneName.HIP_L, .5, 0, 0).rotate(BoneName.HIP_R, .5, 0, 0).position(BoneName.PELVIS, 0, -.15, -.1).done().at(.25, "ease-in").rotate(BoneName.PELVIS, -.6, 0, 0).rotate(BoneName.SPINE_LOWER, -.4, 0, 0).rotate(BoneName.SPINE_UPPER, -.5, 0, 0).rotate(BoneName.HIP_L, .8, 0, 0).rotate(BoneName.HIP_R, .8, 0, 0).rotate(BoneName.KNEE_L, -.4, 0, 0).rotate(BoneName.KNEE_R, -.4, 0, 0).rotate(BoneName.SHOULDER_L, .4, 0, -.5).rotate(BoneName.SHOULDER_R, .4, 0, .5).position(BoneName.PELVIS, 0, -.4, -.15).done().at(.38, "ease-in").rotate(BoneName.PELVIS, -.9, 0, 0).rotate(BoneName.SPINE_LOWER, -.6, 0, 0).rotate(BoneName.SPINE_UPPER, -.7, 0, 0).rotate(BoneName.SHOULDER_L, .6, 0, -.8).rotate(BoneName.SHOULDER_R, .6, 0, .8).rotate(BoneName.ELBOW_L, 0, 0, -.3).rotate(BoneName.ELBOW_R, 0, 0, .3).rotate(BoneName.HEAD, .3, 0, 0).position(BoneName.PELVIS, 0, -.5, -.2).done().at(.5, "ease-out").rotate(BoneName.PELVIS, -1.57, 0, 0).rotate(BoneName.SPINE_LOWER, 0, 0, 0).rotate(BoneName.SPINE_UPPER, .1, 0, 0).rotate(BoneName.HEAD, .2, 0, 0).rotate(BoneName.SHOULDER_L, 0, 0, -1.2).rotate(BoneName.SHOULDER_R, 0, 0, 1.2).rotate(BoneName.ELBOW_L, 0, 0, 0).rotate(BoneName.ELBOW_R, 0, 0, 0).rotate(BoneName.HIP_L, 0, 0, 0).rotate(BoneName.HIP_R, 0, 0, 0).rotate(BoneName.KNEE_L, -.2, 0, 0).rotate(BoneName.KNEE_R, -.2, 0, 0).position(BoneName.PELVIS, 0, -.7, -.3).done().build();
|
|
58
|
+
/**
|
|
59
|
+
* Fall Side Left - 좌측낙법
|
|
60
|
+
*
|
|
61
|
+
* Side fall to the left (측방낙법 - Cheukbang Nakbeop).
|
|
62
|
+
* Shoulder/hip impact, arm slaps ground.
|
|
63
|
+
*
|
|
64
|
+
* @korean 좌측낙법애니메이션
|
|
65
|
+
*/
|
|
66
|
+
var FALL_SIDE_LEFT_ANIMATION = MartialArtsAnimationBuilder.create("fall_side_left", "좌측낙법").asMovement(.45, false).at(0, "linear").rotate(BoneName.PELVIS, 0, 0, .2).rotate(BoneName.SPINE_UPPER, 0, 0, .3).rotate(BoneName.KNEE_L, -.3, 0, 0).rotate(BoneName.KNEE_R, -.2, 0, 0).done().at(.1, "ease-in").rotate(BoneName.PELVIS, 0, 0, .5).rotate(BoneName.SPINE_LOWER, 0, 0, .3).rotate(BoneName.SPINE_UPPER, 0, 0, .5).rotate(BoneName.HIP_L, .3, 0, .3).rotate(BoneName.KNEE_L, -.8, 0, 0).rotate(BoneName.SHOULDER_L, 0, 0, -.5).position(BoneName.PELVIS, -.1, -.1, 0).done().at(.22, "ease-in").rotate(BoneName.PELVIS, 0, 0, 1).rotate(BoneName.SPINE_LOWER, 0, 0, .6).rotate(BoneName.SPINE_UPPER, 0, 0, .8).rotate(BoneName.SHOULDER_L, .3, 0, -.9).rotate(BoneName.ELBOW_L, 0, 0, -.4).rotate(BoneName.HIP_L, .4, 0, .5).rotate(BoneName.HIP_R, -.2, 0, 0).position(BoneName.PELVIS, -.2, -.3, 0).done().at(.33, "ease-in").rotate(BoneName.PELVIS, 0, 0, 1.3).rotate(BoneName.SPINE_LOWER, 0, 0, .8).rotate(BoneName.SPINE_UPPER, 0, 0, 1).rotate(BoneName.SHOULDER_L, .2, 0, -1.2).rotate(BoneName.ELBOW_L, 0, 0, -.2).rotate(BoneName.HEAD, 0, 0, .3).position(BoneName.PELVIS, -.3, -.5, 0).done().at(.45, "ease-out").rotate(BoneName.PELVIS, 0, 1.57, 1.57).rotate(BoneName.SPINE_LOWER, 0, 0, .2).rotate(BoneName.SPINE_UPPER, 0, 0, .3).rotate(BoneName.HEAD, 0, 0, .2).rotate(BoneName.SHOULDER_L, 0, 0, -1.4).rotate(BoneName.SHOULDER_R, .3, 0, .2).rotate(BoneName.HIP_L, .2, 0, 0).rotate(BoneName.HIP_R, -.3, 0, 0).rotate(BoneName.KNEE_L, -.3, 0, 0).rotate(BoneName.KNEE_R, -.5, 0, 0).position(BoneName.PELVIS, -.4, -.7, 0).done().build();
|
|
67
|
+
/**
|
|
68
|
+
* Fall Side Right - 우측낙법
|
|
69
|
+
*
|
|
70
|
+
* Side fall to the right (측방낙법 - Cheukbang Nakbeop).
|
|
71
|
+
* Mirror of left side fall.
|
|
72
|
+
*
|
|
73
|
+
* @korean 우측낙법애니메이션
|
|
74
|
+
*/
|
|
75
|
+
var FALL_SIDE_RIGHT_ANIMATION = MartialArtsAnimationBuilder.create("fall_side_right", "우측낙법").asMovement(.45, false).at(0, "linear").rotate(BoneName.PELVIS, 0, 0, -.2).rotate(BoneName.SPINE_UPPER, 0, 0, -.3).rotate(BoneName.KNEE_R, -.3, 0, 0).rotate(BoneName.KNEE_L, -.2, 0, 0).done().at(.1, "ease-in").rotate(BoneName.PELVIS, 0, 0, -.5).rotate(BoneName.SPINE_LOWER, 0, 0, -.3).rotate(BoneName.SPINE_UPPER, 0, 0, -.5).rotate(BoneName.HIP_R, .3, 0, -.3).rotate(BoneName.KNEE_R, -.8, 0, 0).rotate(BoneName.SHOULDER_R, 0, 0, .5).position(BoneName.PELVIS, .1, -.1, 0).done().at(.22, "ease-in").rotate(BoneName.PELVIS, 0, 0, -1).rotate(BoneName.SPINE_LOWER, 0, 0, -.6).rotate(BoneName.SPINE_UPPER, 0, 0, -.8).rotate(BoneName.SHOULDER_R, .3, 0, .9).rotate(BoneName.ELBOW_R, 0, 0, .4).rotate(BoneName.HIP_R, .4, 0, -.5).rotate(BoneName.HIP_L, -.2, 0, 0).position(BoneName.PELVIS, .2, -.3, 0).done().at(.33, "ease-in").rotate(BoneName.PELVIS, 0, 0, -1.3).rotate(BoneName.SPINE_LOWER, 0, 0, -.8).rotate(BoneName.SPINE_UPPER, 0, 0, -1).rotate(BoneName.SHOULDER_R, .2, 0, 1.2).rotate(BoneName.ELBOW_R, 0, 0, .2).rotate(BoneName.HEAD, 0, 0, -.3).position(BoneName.PELVIS, .3, -.5, 0).done().at(.45, "ease-out").rotate(BoneName.PELVIS, 0, -1.57, -1.57).rotate(BoneName.SPINE_LOWER, 0, 0, -.2).rotate(BoneName.SPINE_UPPER, 0, 0, -.3).rotate(BoneName.HEAD, 0, 0, -.2).rotate(BoneName.SHOULDER_R, 0, 0, 1.4).rotate(BoneName.SHOULDER_L, .3, 0, -.2).rotate(BoneName.HIP_R, .2, 0, 0).rotate(BoneName.HIP_L, -.3, 0, 0).rotate(BoneName.KNEE_R, -.3, 0, 0).rotate(BoneName.KNEE_L, -.5, 0, 0).position(BoneName.PELVIS, .4, -.7, 0).done().build();
|
|
76
|
+
/**
|
|
77
|
+
* Map of all basic animations for easy access
|
|
78
|
+
* 기본 애니메이션 맵
|
|
79
|
+
*/
|
|
80
|
+
var BASIC_ANIMATIONS = new Map([
|
|
81
|
+
["idle", IDLE_ANIMATION],
|
|
82
|
+
["walk", WALK_ANIMATION],
|
|
83
|
+
["run", RUN_ANIMATION],
|
|
84
|
+
["fall_forward", FALL_FORWARD_ANIMATION],
|
|
85
|
+
["fall_backward", FALL_BACKWARD_ANIMATION],
|
|
86
|
+
["fall_side_left", FALL_SIDE_LEFT_ANIMATION],
|
|
87
|
+
["fall_side_right", FALL_SIDE_RIGHT_ANIMATION]
|
|
88
|
+
]);
|
|
89
|
+
//#endregion
|
|
90
|
+
export { BASIC_ANIMATIONS, FALL_BACKWARD_ANIMATION, FALL_FORWARD_ANIMATION, FALL_SIDE_LEFT_ANIMATION, FALL_SIDE_RIGHT_ANIMATION, IDLE_ANIMATION, RUN_ANIMATION, WALK_ANIMATION };
|
|
91
|
+
|
|
92
|
+
//# sourceMappingURL=BasicAnimations.js.map
|