blacktrigram 0.7.45 → 0.7.48
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/App2.js.map +1 -1
- package/lib/audio/AudioAssetLoader.js.map +1 -1
- package/lib/audio/AudioAssetRegistry.js.map +1 -1
- package/lib/audio/AudioCache.js.map +1 -1
- package/lib/audio/AudioManager.js.map +1 -1
- package/lib/audio/AudioMonitor.js.map +1 -1
- package/lib/audio/AudioPool.js.map +1 -1
- package/lib/audio/AudioProvider.js.map +1 -1
- package/lib/audio/AudioUtils.js.map +1 -1
- package/lib/audio/BoneImpactAudioMap.js.map +1 -1
- package/lib/audio/VariantSelector.js.map +1 -1
- package/lib/audio/types.js.map +1 -1
- package/lib/components/screens/combat/CombatScreen3D.d.ts.map +1 -1
- package/lib/components/screens/combat/CombatScreen3D.js +22 -11
- package/lib/components/screens/combat/CombatScreen3D.js.map +1 -1
- package/lib/components/screens/combat/components/controls/CombatButtons.js.map +1 -1
- package/lib/components/screens/combat/components/controls/CombatControlsPanel.js.map +1 -1
- package/lib/components/screens/combat/components/controls/ControlsGuide.js.map +1 -1
- package/lib/components/screens/combat/components/controls/KeyboardHints.js.map +1 -1
- package/lib/components/screens/combat/components/controls/PauseMenu.js.map +1 -1
- package/lib/components/screens/combat/components/controls/PauseMenuButton.js.map +1 -1
- package/lib/components/screens/combat/components/controls/QuickSettings.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodDecals3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodLossOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodParticles3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/BloodViscosity3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/CombatParticleEffects3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/ConsciousnessBlur.js.map +1 -1
- package/lib/components/screens/combat/components/effects/InternalDamage3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/PainVignette.js.map +1 -1
- package/lib/components/screens/combat/components/effects/ParticleAudio3D.js.map +1 -1
- package/lib/components/screens/combat/components/effects/TraumaOverlay3D.js.map +1 -1
- package/lib/components/screens/combat/components/feedback/MatchCountdown.js.map +1 -1
- package/lib/components/screens/combat/components/feedback/RoundAnnouncementOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/feedback/RoundDisplayStatus.js.map +1 -1
- package/lib/components/screens/combat/components/feedback/RoundStartAnnouncementOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatBottomHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatLeftHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatPortraitStatusStrip.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatRightHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/CombatTopHUD.js.map +1 -1
- package/lib/components/screens/combat/components/hud/DifficultyIndicator.js.map +1 -1
- package/lib/components/screens/combat/components/hud/FPSMonitor.js.map +1 -1
- package/lib/components/screens/combat/components/hud/MobileControlsWrapper.js.map +1 -1
- package/lib/components/screens/combat/components/hud/PlayerStateOverlayHtml.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/BalanceIndicator.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/InputBufferDisplay.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/StaminaWarning.js.map +1 -1
- package/lib/components/screens/combat/components/indicators/TechniqueNameDisplay.js.map +1 -1
- package/lib/components/screens/combat/helpers/AnimationUpdater.d.ts.map +1 -1
- package/lib/components/screens/combat/helpers/AnimationUpdater.js +4 -2
- package/lib/components/screens/combat/helpers/AnimationUpdater.js.map +1 -1
- package/lib/components/screens/combat/helpers/combatHelpers.js.map +1 -1
- package/lib/components/screens/combat/hooks/useAICombat.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatActions.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatAttackMovement.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatAudio.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatLayout.js.map +1 -1
- package/lib/components/screens/combat/hooks/useCombatState.js.map +1 -1
- package/lib/components/screens/controls/ControlsScreen3D.js.map +1 -1
- package/lib/components/screens/controls/components/ControlBindingsOverlayHtml.js.map +1 -1
- package/lib/components/screens/controls/components/ControlCategoryTabsOverlayHtml.js.map +1 -1
- package/lib/components/screens/controls/components/GamepadVisualization3D.js.map +1 -1
- package/lib/components/screens/controls/components/InteractiveControlDemoOverlayHtml.js.map +1 -1
- package/lib/components/screens/controls/components/Key3D.js.map +1 -1
- package/lib/components/screens/controls/components/VisualKeyboard3D.js.map +1 -1
- package/lib/components/screens/controls/constants/ControlsConstants.js.map +1 -1
- package/lib/components/screens/controls/hooks/useControlsState.js.map +1 -1
- package/lib/components/screens/endscreen/EndScreen3D.js.map +1 -1
- package/lib/components/screens/endscreen/components/DefeatAnimation3D.js.map +1 -1
- package/lib/components/screens/endscreen/components/MatchStatisticsDisplayOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/NavigationButtonsOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/PerformanceBreakdownOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/PerformanceRatingOverlayHtml.js.map +1 -1
- package/lib/components/screens/endscreen/components/VictoryAnimation3D.js.map +1 -1
- package/lib/components/screens/endscreen/components/WinnerDisplayOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/IntroScreen3D.js +1 -1
- package/lib/components/screens/intro/IntroScreen3D.js.map +1 -1
- package/lib/components/screens/intro/components/AbilityListOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeCardGridOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeCardOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/ArchetypeDisplayOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/EnhancedArchetypeDisplayOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/MenuButtonsOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/MenuSectionOverlayHtml.js.map +1 -1
- package/lib/components/screens/intro/components/StatBarOverlayHtml.js.map +1 -1
- package/lib/components/screens/philosophy/PhilosophyScreen3D.js.map +1 -1
- package/lib/components/screens/training/TrainingScreen3D.d.ts.map +1 -1
- package/lib/components/screens/training/TrainingScreen3D.js +1 -0
- package/lib/components/screens/training/TrainingScreen3D.js.map +1 -1
- package/lib/components/screens/training/components/AnatomyControlsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/AnatomyOverlay3D.js.map +1 -1
- package/lib/components/screens/training/components/FootPlacementMarkers3D.js.map +1 -1
- package/lib/components/screens/training/components/FootworkDrillsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/HitFeedbackEffect3D.js.map +1 -1
- package/lib/components/screens/training/components/TrainingButtonsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingControlsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingDummy3D.js.map +1 -1
- package/lib/components/screens/training/components/TrainingFeedbackOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingModeSelectorOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/TrainingStatsOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/VitalPointMarker3D.js.map +1 -1
- package/lib/components/screens/training/components/VitalPointTrainingOverlayHtml.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingBottomHUD.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingLeftHUD.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingRightHUD.js.map +1 -1
- package/lib/components/screens/training/components/hud/TrainingTopHUD.js.map +1 -1
- package/lib/components/screens/training/hooks/useAttackMovement.js.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingActions.d.ts +1 -0
- package/lib/components/screens/training/hooks/useTrainingActions.d.ts.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingActions.js +6 -4
- package/lib/components/screens/training/hooks/useTrainingActions.js.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingLayout.js.map +1 -1
- package/lib/components/screens/training/hooks/useTrainingState.js.map +1 -1
- package/lib/components/shared/base/BaseButton.js.map +1 -1
- package/lib/components/shared/base/BaseButtonOverlayHtml.js.map +1 -1
- package/lib/components/shared/base/BasePanel.js.map +1 -1
- package/lib/components/shared/base/BaseText.js.map +1 -1
- package/lib/components/shared/base/useKoreanTheme.js.map +1 -1
- package/lib/components/shared/debug/PerformanceDebugOverlayHtml.js.map +1 -1
- package/lib/components/shared/mobile/ActionButtons.js.map +1 -1
- package/lib/components/shared/mobile/GestureRecognizerPure.js.map +1 -1
- package/lib/components/shared/mobile/HapticController.js.map +1 -1
- package/lib/components/shared/mobile/MobileControlsPure.js.map +1 -1
- package/lib/components/shared/mobile/StanceWheelPure.js.map +1 -1
- package/lib/components/shared/mobile/TouchOptimizer.js.map +1 -1
- package/lib/components/shared/mobile/VirtualDPad.js.map +1 -1
- package/lib/components/shared/three/anatomy/BodySurface.js.map +1 -1
- package/lib/components/shared/three/anatomy/BoneAttachedMuscles.js.map +1 -1
- package/lib/components/shared/three/anatomy/BoneClothing.js.map +1 -1
- package/lib/components/shared/three/anatomy/BoneRenderer.js.map +1 -1
- package/lib/components/shared/three/anatomy/Face3D.js.map +1 -1
- package/lib/components/shared/three/anatomy/Foot3D.js.map +1 -1
- package/lib/components/shared/three/anatomy/Hand3D.js.map +1 -1
- package/lib/components/shared/three/effects/ActionFeedback.js.map +1 -1
- package/lib/components/shared/three/effects/DamageNumbers.js.map +1 -1
- package/lib/components/shared/three/effects/HitEffects3D.js.map +1 -1
- package/lib/components/shared/three/effects/PlayerStateIndicators.js.map +1 -1
- package/lib/components/shared/three/effects/StanceSymbol3D.js.map +1 -1
- package/lib/components/shared/three/effects/StanceTransitionEffect.js.map +1 -1
- package/lib/components/shared/three/effects/VitalPointMarkers3D.js.map +1 -1
- package/lib/components/shared/three/indicators/ElementalColorSystem.js.map +1 -1
- package/lib/components/shared/three/indicators/GuardIndicator.js.map +1 -1
- package/lib/components/shared/three/indicators/HapticFeedback.js.map +1 -1
- package/lib/components/shared/three/indicators/StanceChangeIndicator.js.map +1 -1
- package/lib/components/shared/three/models/Player3DWithTransitions.js.map +1 -1
- package/lib/components/shared/three/models/SkeletalPlayer3D.d.ts.map +1 -1
- package/lib/components/shared/three/models/SkeletalPlayer3D.js +7 -5
- package/lib/components/shared/three/models/SkeletalPlayer3D.js.map +1 -1
- package/lib/components/shared/three/optimization/AdaptiveQuality.js.map +1 -1
- package/lib/components/shared/three/scene/AtmosphericParticles3D.js.map +1 -1
- package/lib/components/shared/three/scene/BackgroundScene3D.js.map +1 -1
- package/lib/components/shared/three/scene/CombatArena3D.js.map +1 -1
- package/lib/components/shared/three/scene/KoreanSignage3D.js.map +1 -1
- package/lib/components/shared/three/ui/ArchetypeCard.js.map +1 -1
- package/lib/components/shared/three/ui/BodyPartHealthDisplay.js.map +1 -1
- package/lib/components/shared/three/ui/BreathingIndicator2.js.map +1 -1
- package/lib/components/shared/three/ui/CombatReadinessBar.js.map +1 -1
- package/lib/components/shared/three/ui/ComboCounter.js.map +1 -1
- package/lib/components/shared/three/ui/HealthBar.js.map +1 -1
- package/lib/components/shared/three/ui/KoreanButton.js.map +1 -1
- package/lib/components/shared/three/ui/KoreanPanel.js.map +1 -1
- package/lib/components/shared/three/ui/KoreanText.js.map +1 -1
- package/lib/components/shared/three/ui/MenuList.js.map +1 -1
- package/lib/components/shared/three/ui/PlayerHUD.js.map +1 -1
- package/lib/components/shared/three/ui/ProgressBar.js.map +1 -1
- package/lib/components/shared/three/ui/SpeedIndicatorHUD.js.map +1 -1
- package/lib/components/shared/three/ui/StaminaBar.js.map +1 -1
- package/lib/components/shared/three/ui/TechniqueBar.js.map +1 -1
- package/lib/components/shared/three/ui/TechniqueCard.js.map +1 -1
- package/lib/components/shared/three/ui/VitalPointOverlayControlsHtml.js.map +1 -1
- package/lib/components/shared/ui/BackButton.js.map +1 -1
- package/lib/components/shared/ui/BaseHUDContainer.js.map +1 -1
- package/lib/components/shared/ui/CombatTimer.js.map +1 -1
- package/lib/components/shared/ui/ErrorModal.js.map +1 -1
- package/lib/components/shared/ui/LoadingState.js.map +1 -1
- package/lib/components/shared/ui/SplashScreen.js +2 -2
- package/lib/components/shared/ui/SplashScreen.js.map +1 -1
- package/lib/components/shared/ui/VitalPointOverlayControlsPure.js.map +1 -1
- package/lib/components/shared/ui/VolumeControl.js.map +1 -1
- package/lib/components/shared/ui/shared/ConfirmDialog.js.map +1 -1
- package/lib/components/ui/combat/BalanceIndicatorOverlayHtml.js.map +1 -1
- package/lib/constants/bodyDimensions.js.map +1 -1
- package/lib/constants/bodyRenderingConstants.js.map +1 -1
- package/lib/data/archetypeClothing.js.map +1 -1
- package/lib/data/archetypePhysicalAttributes.js.map +1 -1
- package/lib/data/techniqueMappings.js.map +1 -1
- package/lib/data/techniques.js.map +1 -1
- package/lib/hooks/useActionFeedback.js.map +1 -1
- package/lib/hooks/useBalanceAnimations.js.map +1 -1
- package/lib/hooks/useCombatTimer.js.map +1 -1
- package/lib/hooks/useDebounce.js.map +1 -1
- package/lib/hooks/useHUDLayout.js.map +1 -1
- package/lib/hooks/useHandPoseTransitions.js.map +1 -1
- package/lib/hooks/useKeyboardControls.js.map +1 -1
- package/lib/hooks/useMatchCountdown.js.map +1 -1
- package/lib/hooks/useMuscleActivation.js.map +1 -1
- package/lib/hooks/usePauseMenu.js.map +1 -1
- package/lib/hooks/usePlayerAnimation.js.map +1 -1
- package/lib/hooks/useResponsiveLayout.js.map +1 -1
- package/lib/hooks/useRoundTransition.js.map +1 -1
- package/lib/hooks/useSkeletalAnimation.d.ts.map +1 -1
- package/lib/hooks/useSkeletalAnimation.js +1 -1
- package/lib/hooks/useSkeletalAnimation.js.map +1 -1
- package/lib/hooks/useTechniqueSelection.js.map +1 -1
- package/lib/hooks/useThrottle.js.map +1 -1
- package/lib/hooks/useTouchControls.js.map +1 -1
- package/lib/hooks/useWebGLContextLossHandler.js.map +1 -1
- package/lib/hooks/useWindowSize.js.map +1 -1
- package/lib/systems/CombatSystem.js.map +1 -1
- package/lib/systems/EffectCalculator.js.map +1 -1
- package/lib/systems/LayoutSystem.js.map +1 -1
- package/lib/systems/PlayerEffectManager.js.map +1 -1
- package/lib/systems/ResponsiveScaling.js.map +1 -1
- package/lib/systems/TrigramSystem.js.map +1 -1
- package/lib/systems/VitalPointSystem.js.map +1 -1
- package/lib/systems/ai/AIPersonality.js.map +1 -1
- package/lib/systems/ai/AdaptiveDifficulty.js +16 -16
- package/lib/systems/ai/AdaptiveDifficulty.js.map +1 -1
- package/lib/systems/ai/ArchetypeEnforcer.js.map +1 -1
- package/lib/systems/ai/ComboSystem.js.map +1 -1
- package/lib/systems/ai/DecisionTree.js.map +1 -1
- package/lib/systems/ai/TrainingAI.js.map +1 -1
- package/lib/systems/ai/types.js.map +1 -1
- package/lib/systems/animation/builders/AnimationBuilder.js.map +1 -1
- package/lib/systems/animation/builders/HandPoseApplicator.js.map +1 -1
- package/lib/systems/animation/builders/HandPoses.js.map +1 -1
- package/lib/systems/animation/builders/KeyframeConfig.js.map +1 -1
- package/lib/systems/animation/builders/KeyframeInterpolation.js.map +1 -1
- package/lib/systems/animation/builders/KickPhaseApplicator.d.ts +6 -0
- package/lib/systems/animation/builders/KickPhaseApplicator.d.ts.map +1 -1
- package/lib/systems/animation/builders/KickPhaseApplicator.js +16 -9
- package/lib/systems/animation/builders/KickPhaseApplicator.js.map +1 -1
- package/lib/systems/animation/builders/KoreanGuardPositions.d.ts +4 -4
- package/lib/systems/animation/builders/KoreanGuardPositions.js.map +1 -1
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.d.ts +1 -1
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.d.ts.map +1 -1
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js +5 -5
- package/lib/systems/animation/builders/MartialArtsAnimationBuilder.js.map +1 -1
- package/lib/systems/animation/builders/MartialArtsConstants.d.ts +112 -71
- package/lib/systems/animation/builders/MartialArtsConstants.d.ts.map +1 -1
- package/lib/systems/animation/builders/MartialArtsConstants.js +113 -72
- package/lib/systems/animation/builders/MartialArtsConstants.js.map +1 -1
- package/lib/systems/animation/builders/MartialPoseApplicator.js.map +1 -1
- package/lib/systems/animation/builders/PunchPhaseApplicator.js.map +1 -1
- package/lib/systems/animation/builders/SkeletonRig.js.map +1 -1
- package/lib/systems/animation/builders/TrigramGuardApplicator.js.map +1 -1
- package/lib/systems/animation/catalogs/AttackAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/BasicAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/ComboAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/DarkOpsAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/DefensiveAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/ElbowKneeAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/EnhancedAttackAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/EnhancedElbowKneeAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/FootworkSkeletalAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GamRedirectionAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GamStanceAnimations.js +21 -0
- package/lib/systems/animation/catalogs/GamStanceAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GamTechniqueAnimations.js +34 -2
- package/lib/systems/animation/catalogs/GamTechniqueAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GanStanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GanTechniqueAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GeonStanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.d.ts +9 -0
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.d.ts.map +1 -1
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.js +288 -0
- package/lib/systems/animation/catalogs/GonTechniqueAnimations.js.map +1 -0
- package/lib/systems/animation/catalogs/GrapplingAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/JinStanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/JinTechniqueAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/KickAnimations.d.ts +2 -2
- package/lib/systems/animation/catalogs/KickAnimations.js +2 -2
- package/lib/systems/animation/catalogs/KickAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/LiStanceAnimations.js +14 -1
- package/lib/systems/animation/catalogs/LiStanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/LiTechniqueAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/MovementAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/PunchAnimations.d.ts +1 -1
- package/lib/systems/animation/catalogs/PunchAnimations.js +1 -1
- package/lib/systems/animation/catalogs/PunchAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/RecoveryAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/SonStanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/SonTechniqueAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/SpecializedPunchAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/StanceAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/StanceAttackAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/StanceGuardPoses.d.ts +6 -6
- package/lib/systems/animation/catalogs/StanceGuardPoses.js +36 -36
- package/lib/systems/animation/catalogs/StanceGuardPoses.js.map +1 -1
- package/lib/systems/animation/catalogs/StanceIdleAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/StanceLocomotionAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/StepSkeletalAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/TaeJointLockAnimations.js.map +1 -1
- package/lib/systems/animation/catalogs/TaeStanceAnimations.js.map +1 -1
- package/lib/systems/animation/constants/AnatomicalLimits.js.map +1 -1
- package/lib/systems/animation/core/AnimationHitTiming.js.map +1 -1
- package/lib/systems/animation/core/AnimationOptimizations.js.map +1 -1
- package/lib/systems/animation/core/AnimationPriority.js +15 -15
- package/lib/systems/animation/core/AnimationPriority.js.map +1 -1
- package/lib/systems/animation/core/AnimationRegistry.d.ts +30 -0
- package/lib/systems/animation/core/AnimationRegistry.d.ts.map +1 -1
- package/lib/systems/animation/core/AnimationRegistry.js +74 -12
- package/lib/systems/animation/core/AnimationRegistry.js.map +1 -1
- package/lib/systems/animation/core/AnimationStateMachine.js +16 -16
- package/lib/systems/animation/core/AnimationStateMachine.js.map +1 -1
- package/lib/systems/animation/core/AnimationTransitions.d.ts.map +1 -1
- package/lib/systems/animation/core/AnimationTransitions.js +34 -0
- package/lib/systems/animation/core/AnimationTransitions.js.map +1 -1
- package/lib/systems/animation/core/LateralityTransform.js.map +1 -1
- package/lib/systems/animation/core/RecoveryPhaseEnhancer.js.map +1 -1
- package/lib/systems/animation/core/TechniqueAnimationMapper.js.map +1 -1
- package/lib/systems/animation/core/TechniqueAnimationMapping.js.map +1 -1
- package/lib/systems/animation/core/index.d.ts +1 -1
- package/lib/systems/animation/core/index.d.ts.map +1 -1
- package/lib/systems/animation/core/types.d.ts +24 -0
- package/lib/systems/animation/core/types.d.ts.map +1 -1
- package/lib/systems/animation/core/types.js +27 -11
- package/lib/systems/animation/core/types.js.map +1 -1
- package/lib/systems/animation/systems/AdvancedJointMovements.js.map +1 -1
- package/lib/systems/animation/systems/BodyFacingSystem.js.map +1 -1
- package/lib/systems/animation/systems/FacialExpressions.js.map +1 -1
- package/lib/systems/animation/systems/FallAnimations.js.map +1 -1
- package/lib/systems/animation/systems/MuscleActivation.js.map +1 -1
- package/lib/systems/bodypart/BodyPartDamageIntegration.js.map +1 -1
- package/lib/systems/bodypart/BodyPartHealthSystem.js.map +1 -1
- package/lib/systems/bodypart/BodyPartPositionMapping.js.map +1 -1
- package/lib/systems/bodypart/CombatInjuryIntegration.js.map +1 -1
- package/lib/systems/bodypart/InjuryIntegration.js.map +1 -1
- package/lib/systems/bodypart/InjuryTracker.js.map +1 -1
- package/lib/systems/bodypart/MovementPenaltySystem.js.map +1 -1
- package/lib/systems/bodypart/PlayerInjuryTrackingManager.js.map +1 -1
- package/lib/systems/bodypart/types.js.map +1 -1
- package/lib/systems/breathing/BreathingDisruptionSystem.js +19 -19
- package/lib/systems/breathing/BreathingDisruptionSystem.js.map +1 -1
- package/lib/systems/breathing/feedback.js.map +1 -1
- package/lib/systems/breathing/integration.js.map +1 -1
- package/lib/systems/combat/BalanceSystem.js +19 -19
- package/lib/systems/combat/BalanceSystem.js.map +1 -1
- package/lib/systems/combat/BreakingStatusEffects.js.map +1 -1
- package/lib/systems/combat/CombatStateSystem.js +17 -17
- package/lib/systems/combat/CombatStateSystem.js.map +1 -1
- package/lib/systems/combat/ConsciousnessSystem.js +24 -24
- package/lib/systems/combat/ConsciousnessSystem.js.map +1 -1
- package/lib/systems/combat/FallIntegration.js.map +1 -1
- package/lib/systems/combat/GrappleSystem.js.map +1 -1
- package/lib/systems/combat/LimbExposureSystem.js.map +1 -1
- package/lib/systems/combat/PainResponseSystem.js +21 -21
- package/lib/systems/combat/PainResponseSystem.js.map +1 -1
- package/lib/systems/combat/TrainingCombatSystem.js.map +1 -1
- package/lib/systems/combat/painConsciousnessUtils.js.map +1 -1
- package/lib/systems/combat/typeGuards.js.map +1 -1
- package/lib/systems/effects.js.map +1 -1
- package/lib/systems/game.js.map +1 -1
- package/lib/systems/movement/InjuryMovementModifier.js.map +1 -1
- package/lib/systems/movement/helpers/AccelerationUpdater.js.map +1 -1
- package/lib/systems/movement/helpers/accelerationUtils.js.map +1 -1
- package/lib/systems/movement/integration.js.map +1 -1
- package/lib/systems/physics/AttackMovementPhysics.js.map +1 -1
- package/lib/systems/physics/CollisionDetection.js.map +1 -1
- package/lib/systems/physics/CoordinateMapper.js.map +1 -1
- package/lib/systems/physics/KnockbackPhysics.js.map +1 -1
- package/lib/systems/physics/MovementPhysics.js.map +1 -1
- package/lib/systems/physics/PhysicalReachCalculator.js.map +1 -1
- package/lib/systems/physics/SpeedModifierSystem.js +6 -6
- package/lib/systems/physics/SpeedModifierSystem.js.map +1 -1
- package/lib/systems/trigram/KoreanCulture.js.map +1 -1
- package/lib/systems/trigram/KoreanTechniques.js.map +1 -1
- package/lib/systems/trigram/StanceManager.js.map +1 -1
- package/lib/systems/trigram/TransitionCalculator.js.map +1 -1
- package/lib/systems/trigram/TrigramCalculator.js.map +1 -1
- package/lib/systems/trigram/techniques/DarkOpsTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/GamTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/GanTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/GeonTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/GonTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/JinTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/LiTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/SonTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/TaeTechniques.js.map +1 -1
- package/lib/systems/trigram/techniques/TechniqueConfig.js.map +1 -1
- package/lib/systems/trigram/techniques/index.js.map +1 -1
- package/lib/systems/trigram/types/GonTechniqueExtensions.js.map +1 -1
- package/lib/systems/trigram/types.js.map +1 -1
- package/lib/systems/types.js.map +1 -1
- package/lib/systems/vitalpoint/DamageCalculator.js.map +1 -1
- package/lib/systems/vitalpoint/HitDetection.js.map +1 -1
- package/lib/systems/vitalpoint/KoreanAnatomy.js.map +1 -1
- package/lib/systems/vitalpoint/KoreanVitalPoints.js.map +1 -1
- package/lib/systems/vitalpoint/MeridianVitalPointMapping.js.map +1 -1
- package/lib/systems/vitalpoint/VitalPointsData.js.map +1 -1
- package/lib/types/AccessibilityTypes.js.map +1 -1
- package/lib/types/LayoutTypes.js.map +1 -1
- package/lib/types/PhysicsTypes.js.map +1 -1
- package/lib/types/common.js.map +1 -1
- package/lib/types/constants/animations.js.map +1 -1
- package/lib/types/constants/colors.js.map +1 -1
- package/lib/types/constants/designSystem.js.map +1 -1
- package/lib/types/constants/index.js.map +1 -1
- package/lib/types/constants/layout.js.map +1 -1
- package/lib/types/constants/performance.js.map +1 -1
- package/lib/types/constants/typography.js.map +1 -1
- package/lib/types/constants/ui.js.map +1 -1
- package/lib/types/facial.js +19 -19
- package/lib/types/facial.js.map +1 -1
- package/lib/types/hand-animation.js.map +1 -1
- package/lib/types/injury.js.map +1 -1
- package/lib/types/muscle.js.map +1 -1
- package/lib/types/physics.js.map +1 -1
- package/lib/types/physicsConstants.js.map +1 -1
- package/lib/types/player-visual.d.ts +1 -1
- package/lib/types/player-visual.d.ts.map +1 -1
- package/lib/types/skeletal.js.map +1 -1
- package/lib/types/techniqueId.js.map +1 -1
- package/lib/utils/accessibility.js.map +1 -1
- package/lib/utils/arenaWorldDimensions.js.map +1 -1
- package/lib/utils/assetConfig.js.map +1 -1
- package/lib/utils/characterScaling.js.map +1 -1
- package/lib/utils/colorHelpers.js.map +1 -1
- package/lib/utils/colorUtils.js.map +1 -1
- package/lib/utils/combatReadiness.js.map +1 -1
- package/lib/utils/controlMapping.js.map +1 -1
- package/lib/utils/deviceDetection.js +6 -7
- package/lib/utils/deviceDetection.js.map +1 -1
- package/lib/utils/effectUtils.js.map +1 -1
- package/lib/utils/fabricTextures.js.map +1 -1
- package/lib/utils/hapticFeedback.js.map +1 -1
- package/lib/utils/haptics.js.map +1 -1
- package/lib/utils/htmlOverlayHelpers.js.map +1 -1
- package/lib/utils/inputSystem.js.map +1 -1
- package/lib/utils/koreanThemeHelpers.js.map +1 -1
- package/lib/utils/math.js.map +1 -1
- package/lib/utils/mobileLayoutHelpers.js.map +1 -1
- package/lib/utils/mobileUIUtils.js.map +1 -1
- package/lib/utils/performance/PerformanceMonitor.js.map +1 -1
- package/lib/utils/performance/PerformanceOverlay3D.js.map +1 -1
- package/lib/utils/performance/usePerformanceMonitor.js.map +1 -1
- package/lib/utils/performanceOptimization.js.map +1 -1
- package/lib/utils/player3DHelpers.js.map +1 -1
- package/lib/utils/playerUtils.js.map +1 -1
- package/lib/utils/responsiveLayout.js.map +1 -1
- package/lib/utils/responsiveLayoutHelpers.js.map +1 -1
- package/lib/utils/responsiveOrientationConstants.js.map +1 -1
- package/lib/utils/safeAreaUtils.js.map +1 -1
- package/lib/utils/sharedPhysicsConfig.js.map +1 -1
- package/lib/utils/skeletonScaling.js.map +1 -1
- package/lib/utils/stanceHelpers.js.map +1 -1
- package/lib/utils/threeObjectPool.js.map +1 -1
- package/lib/utils/visualEffects.js.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LiTechniqueAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/LiTechniqueAnimations.ts"],"sourcesContent":["/**\n * ☲ Li (리) - Fire Technique Animations\n *\n * Precision nerve strike technique animations for the Li Fire trigram (리괘).\n * Emphasizes surgical spear-hand strikes, speed combinations, and vital point targeting.\n *\n * **Spear-Hand Formation**: Index and middle fingers extended, ring/pinky curled.\n * This hand formation is applied via withSpearHand() method from MartialArtsAnimationBuilder.\n * Individual finger bones are not modeled in the current skeletal system; finger positions\n * are expressed through wrist angles and hand pose metadata.\n *\n * Philosophy: 외과적 정밀성 (Surgical Precision), 속도의 연속성 (Continuity of Speed)\n * Martial Art Origin: 태권도 정밀 타격 (Taekwondo Precision Strikes)\n * Target Areas: 경동맥 (Carotid), 태양혈 (Temple), 명치 (Solar Plexus), 신경총 (Nerve Clusters)\n *\n * @module systems/animation/catalogs/LiTechniqueAnimations\n * @category Animation - Li Trigram Techniques\n * @korean 리괘기술애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { BoneName } from \"@/types/skeletal\";\nimport { MartialArtsAnimationBuilder } from \"../builders/MartialArtsAnimationBuilder\";\n\n/**\n * Li Fire Spear Animation (화염지창)\n *\n * Precision spear-hand thrust to nerve cluster with explosive penetration.\n * Wind-up cocks spear-hand back to ear, strike extends fully with wrist snap,\n * recovery maintains readiness for follow-up strikes.\n *\n * **Korean Philosophy**: 화염의 창 (Flame's Spear)\n * - Spear-hand formation: Index and middle fingers extended, ring/pinky curled\n * - Wind-up: Cocks back to ear level for maximum thrust potential\n * - Strike: Explosive linear thrust targeting nerve cluster\n * - Snap: Wrist snap on impact increases penetration depth\n * - Recovery: Quick retraction maintains offensive pressure\n *\n * **Target Vital Points** (급소):\n * - 경동맥 (Gyeongdongmaek - Carotid nerve cluster): Consciousness disruption\n * - 태양혈 (Taeyanghyeol - Temple): Concussion and disorientation\n * - 명치 (Myeongchi - Solar plexus): Breath disruption and paralysis\n *\n * **Anatomical Mechanics**:\n * - Wind-up: Shoulder rotation -15°, elbow flexion 115° (near ear)\n * - Extension: Shoulder forward 50°, elbow extends to 5° (nearly straight)\n * - Wrist snap: Dorsiflexion 5° on impact for penetration\n * - Hip thrust: Forward thrust 18° for power transfer\n * - Spine rotation: Counter-rotation 15° for torque generation\n *\n * **Frame Breakdown** (60fps target):\n * - Total: 18 frames (1000ms / 55.56ms per frame ≈ 18 frames)\n * - Wind-up: Frames 0-5 (280ms) - Coiling phase\n * - Strike: Frames 6-13 (440ms) - Explosive thrust and impact\n * - Recovery: Frames 14-18 (280ms) - Retraction and guard reset\n *\n * @duration 1000ms (1.0 seconds)\n * @frames 18 total (5 wind-up, 8 strike, 5 recovery)\n * @korean 화염지창\n */\nexport const LI_FIRE_SPEAR_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"li_fire_spear\", \"화염지창\")\n .asAttack(1.0)\n \n // ═══════════════════════════════════════════════════════════════════════\n // WIND-UP PHASE (0-280ms, Frames 0-5) - 준비 단계\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 0ms: Initial guard position ===\n .at(0, \"linear\")\n // Torso: Neutral ready position\n .rotate(BoneName.SPINE_UPPER, 0.08, -0.05, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, -0.03, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, -0.02, 0)\n .rotate(BoneName.PELVIS, 0, -0.05, 0)\n \n // Right arm: Starting guard position\n .rotate(BoneName.SHOULDER_R, -0.5, -0.3, -0.2) // Guard at chest\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5) // Bent 90°\n .rotate(BoneName.WRIST_R, -0.1, -0.15, 0)\n \n // Left arm: Stays in guard\n .rotate(BoneName.SHOULDER_L, -0.5, 0.35, 0.25)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.WRIST_L, -0.1, 0.15, 0)\n \n // Legs: Stable stance\n .rotate(BoneName.HIP_R, 0.15, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.HIP_L, 0.1, 0, 0)\n .rotate(BoneName.KNEE_L, -0.22, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\") // Right hand in spear-hand\n \n // === Keyframe 140ms: Mid-wind-up - Cocking begins ===\n .at(0.14, \"ease-in\")\n // Torso: Begins rotation for power\n .rotate(BoneName.SPINE_UPPER, 0.05, -0.12, 0) // Coiling rotation\n .rotate(BoneName.SPINE_MIDDLE, 0.03, -0.08, 0)\n .rotate(BoneName.SPINE_LOWER, 0.02, -0.05, 0)\n .rotate(BoneName.PELVIS, 0, -0.08, 0)\n \n // Right arm: Moving back toward ear\n .rotate(BoneName.SHOULDER_R, -0.35, -0.15, 0.1) // Shoulder pulls back\n .rotate(BoneName.ELBOW_R, 0, 0, -1.8) // Elbow bends tighter, moving to ear\n .rotate(BoneName.WRIST_R, -0.12, -0.1, 0) // Wrist cocked back\n \n // Left arm: Guard maintained\n .rotate(BoneName.SHOULDER_L, -0.55, 0.4, 0.28)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.35)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 280ms: Maximum wind-up - Spear-hand at ear ===\n .at(0.28, \"ease-out\")\n // Torso: Maximum coil rotation\n .rotate(BoneName.SPINE_UPPER, 0, -0.15, 0) // Fully coiled\n .rotate(BoneName.SPINE_MIDDLE, 0, -0.1, 0)\n .rotate(BoneName.SPINE_LOWER, 0, -0.06, 0)\n .rotate(BoneName.PELVIS, 0, -0.12, 0)\n \n // Right arm: Cocked back near ear - MAXIMUM chamber\n .rotate(BoneName.SHOULDER_R, -0.25, 0, 0.25) // Shoulder rotated back high\n .rotate(BoneName.ELBOW_R, 0, 0, -2.0) // Elbow near ear level (115° flexion)\n .rotate(BoneName.WRIST_R, -0.15, 0, 0) // Wrist cocked for thrust\n \n // Left arm: Extended for balance\n .rotate(BoneName.SHOULDER_L, -0.6, 0.45, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.3)\n \n // Legs: Stable base for explosive thrust\n .rotate(BoneName.HIP_R, 0.12, 0, 0)\n .rotate(BoneName.KNEE_R, -0.28, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // STRIKE PHASE (280-720ms, Frames 6-13) - 타격 단계\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 440ms: Mid-strike - Explosive thrust begins ===\n .at(0.44, \"ease-out\")\n // Torso: Explosively uncoils and thrusts forward\n .rotate(BoneName.SPINE_UPPER, 0.08, 0.1, 0) // Counter-rotation releases\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0.08, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0.05, 0)\n .rotate(BoneName.PELVIS, 0, 0.08, 0)\n \n // Right arm: Explodes forward\n .rotate(BoneName.SHOULDER_R, -0.6, 0, -0.3) // Shoulder drives forward\n .rotate(BoneName.ELBOW_R, 0, 0, -0.5) // Elbow extends rapidly\n .rotate(BoneName.WRIST_R, -0.05, 0, 0) // Wrist aligning\n \n // Left arm: Pulls back (hikite)\n .rotate(BoneName.SHOULDER_L, -0.4, 0.2, 0.15)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n \n // Legs: Driving power from ground\n .rotate(BoneName.HIP_R, 0.18, 0, 0)\n .rotate(BoneName.KNEE_R, -0.32, 0, 0)\n .rotate(BoneName.HIP_L, 0.08, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 600ms: Near full extension - Approaching target ===\n .at(0.6, \"linear\")\n // Torso: Forward rotation continues\n .rotate(BoneName.SPINE_UPPER, 0.1, 0.15, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.07, 0.12, 0)\n .rotate(BoneName.SPINE_LOWER, 0.04, 0.08, 0)\n .rotate(BoneName.PELVIS, 0.02, 0.12, 0)\n \n // Right arm: Near full extension\n .rotate(BoneName.SHOULDER_R, -0.7, 0, -0.5) // Maximum forward\n .rotate(BoneName.ELBOW_R, 0, 0, -0.15) // Nearly straight (15° remaining)\n .rotate(BoneName.WRIST_R, 0, 0, 0) // Wrist aligned for impact\n \n // Left arm: Fully retracted (hikite)\n .rotate(BoneName.SHOULDER_L, -0.3, 0.1, 0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 720ms: IMPACT - Full extension with wrist snap ===\n .at(0.72, \"ease-out\")\n // Torso: Maximum forward position at impact\n .rotate(BoneName.SPINE_UPPER, 0.12, 0.2, 0) // Peak forward thrust\n .rotate(BoneName.SPINE_MIDDLE, 0.08, 0.15, 0)\n .rotate(BoneName.SPINE_LOWER, 0.05, 0.1, 0)\n .rotate(BoneName.PELVIS, 0.03, 0.15, 0)\n \n // Right arm: FULL EXTENSION with wrist snap\n .rotate(BoneName.SHOULDER_R, -0.75, 0, -0.6) // Complete extension\n .rotate(BoneName.ELBOW_R, 0, 0, -0.05) // Nearly straight (5° for safety)\n .rotate(BoneName.WRIST_R, 0.09, 0, 0) // WRIST SNAP - dorsiflexion/extension for penetration (in this rig, positive X = dorsiflexion)\n \n // NOTE: Finger rigidity expressed through hand pose (spear-hand)\n // Individual finger bones not available in current skeletal system\n \n // Left arm: Counter-pull (hikite) maximized\n .rotate(BoneName.SHOULDER_L, -0.25, 0.05, 0.05)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.75)\n \n // Legs: Maximum power transfer\n .rotate(BoneName.HIP_R, 0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.35, 0, 0)\n .rotate(BoneName.HIP_L, 0.05, 0, 0)\n .rotate(BoneName.KNEE_L, -0.18, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // RECOVERY PHASE (720-1000ms, Frames 14-18) - 회수 단계\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 820ms: Begin retraction ===\n .at(0.82, \"ease-in\")\n // Torso: Begins return to neutral\n .rotate(BoneName.SPINE_UPPER, 0.1, 0.12, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.06, 0.09, 0)\n .rotate(BoneName.SPINE_LOWER, 0.04, 0.06, 0)\n .rotate(BoneName.PELVIS, 0.02, 0.08, 0)\n \n // Right arm: Retracts from extension\n .rotate(BoneName.SHOULDER_R, -0.65, 0, -0.4)\n .rotate(BoneName.ELBOW_R, 0, 0, -0.8) // Elbow bends during retraction\n .rotate(BoneName.WRIST_R, 0, 0, 0) // Wrist neutral\n \n // Left arm: Returns to guard\n .rotate(BoneName.SHOULDER_L, -0.45, 0.25, 0.2)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.5)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 920ms: Continued retraction ===\n .at(0.92, \"ease-in-out\")\n // Torso: Nearly back to guard\n .rotate(BoneName.SPINE_UPPER, 0.08, 0.05, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0.03, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0.02, 0)\n .rotate(BoneName.PELVIS, 0, 0.03, 0)\n \n // Right arm: Returns to chambered guard\n .rotate(BoneName.SHOULDER_R, -0.55, -0.2, -0.25)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3) // Elbow bends back to guard angle\n .rotate(BoneName.WRIST_R, -0.08, -0.12, 0)\n \n // Left arm: Guard position\n .rotate(BoneName.SHOULDER_L, -0.5, 0.32, 0.23)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.42)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 1000ms: Return to guard - Ready for next strike ===\n .at(1.0, \"ease-out\")\n // Torso: Neutral guard position\n .rotate(BoneName.SPINE_UPPER, 0.08, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n \n // Right arm: Chambered guard (ready for immediate re-strike)\n .rotate(BoneName.SHOULDER_R, -0.5, -0.3, -0.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5)\n .rotate(BoneName.WRIST_R, -0.1, -0.15, 0)\n \n // Left arm: Guard maintained\n .rotate(BoneName.SHOULDER_L, -0.5, 0.35, 0.25)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.WRIST_L, -0.1, 0.15, 0)\n \n // Legs: Stable stance restored\n .rotate(BoneName.HIP_R, 0.15, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.HIP_L, 0.1, 0, 0)\n .rotate(BoneName.KNEE_L, -0.22, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\") // Both hands ready in spear-hand\n .build();\n\n/**\n * Li Nerve Strike Combo Animation (화염 연속타)\n *\n * Three rapid spear-hand strikes targeting different nerve clusters in succession.\n * Speed combinations with minimal recovery between strikes emphasize Li's\n * continuous pressure philosophy (속도 연속 공격).\n *\n * **Korean Philosophy**: 연속 화염 (Continuous Flame)\n * - Strike 1: High target (temple/carotid) with right spear-hand\n * - Strike 2: Mid target (solar plexus) with left spear-hand\n * - Strike 3: High target (opposite temple) with right spear-hand\n * - Minimal recovery between strikes maintains offensive pressure\n * - Each strike targets different nerve cluster for cumulative effect\n *\n * **Target Progression** (급소 순서):\n * 1. **태양혈** (Taeyanghyeol - Temple): Disorientation and vision disruption\n * 2. **명치** (Myeongchi - Solar Plexus): Breath disruption and diaphragm paralysis\n * 3. **경동맥** (Gyeongdongmaek - Carotid): Consciousness loss and blood flow disruption\n *\n * **Biomechanics**:\n * - Setup: Quick chambering without telegraphing\n * - Strike-1: 45° angle from guard, 4-frame execution\n * - Transition-1: Immediate switch to opposite hand, 2-frame window\n * - Strike-2: Linear thrust to body, 4-frame execution\n * - Transition-2: Return to first hand, 2-frame window\n * - Strike-3: Rising strike to head, 4-frame execution\n * - Recovery: Quick return to guard maintaining pressure\n *\n * **Speed Mechanics**:\n * - Strike speed: ~240ms per strike (4 frames at 60fps × 16.67ms)\n * - Recovery: ~67ms between strikes (4 frames × 16.67ms)\n * - Total combo: ~980ms (under 1 second for full 3-strike sequence)\n *\n * **Frame Breakdown** (60fps target):\n * - Total: 22 frames (980ms / 44.5ms per frame ≈ 22 frames)\n * - Setup: Frames 0-3 (100ms) - Quick chamber\n * - Strike-1: Frames 4-7 (240ms) - Right temple strike\n * - Strike-2: Frames 8-11 (240ms) - Left solar plexus strike\n * - Strike-3: Frames 12-15 (240ms) - Right carotid strike\n * - Recovery: Frames 16-22 (160ms) - Return to guard\n *\n * @duration 980ms (~1.0 seconds)\n * @frames 22 total (6 setup, 4+4+4 strikes, 4 recovery)\n * @korean 화염연속타\n */\nexport const LI_NERVE_STRIKE_COMBO: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"li_nerve_strike_combo\", \"화염 연속타\")\n .asAttack(0.98)\n \n // ═══════════════════════════════════════════════════════════════════════\n // SETUP PHASE (0-100ms, Frames 0-3) - 준비\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 0ms: Guard position ===\n .at(0, \"linear\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n \n .rotate(BoneName.SHOULDER_R, -0.5, -0.3, -0.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5)\n .rotate(BoneName.WRIST_R, -0.1, -0.15, 0)\n \n .rotate(BoneName.SHOULDER_L, -0.5, 0.35, 0.25)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.WRIST_L, -0.1, 0.15, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // === Keyframe 100ms: Quick chamber for strike-1 ===\n .at(0.1, \"ease-out\")\n .rotate(BoneName.SPINE_UPPER, 0.05, -0.08, 0) // Slight coil\n .rotate(BoneName.SPINE_MIDDLE, 0.03, -0.05, 0)\n \n // Right arm chambers quickly\n .rotate(BoneName.SHOULDER_R, -0.4, -0.2, 0.15)\n .rotate(BoneName.ELBOW_R, 0, 0, -1.6) // Quick cock back\n .rotate(BoneName.WRIST_R, -0.12, -0.1, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // STRIKE-1 PHASE (100-340ms) - Right Temple Strike (우측 태양혈)\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 220ms: Strike-1 extension ===\n .at(0.22, \"ease-out\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0.08, 0) // Uncoil and thrust\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0.06, 0)\n .rotate(BoneName.HEAD, 0.05, 0.05, 0) // Eyes track target\n \n // Right arm extends to temple\n .rotate(BoneName.SHOULDER_R, -0.7, 0.15, -0.4)\n .rotate(BoneName.ELBOW_R, 0, 0, -0.1) // Nearly straight\n .rotate(BoneName.WRIST_R, 0.08, 0, 0) // Wrist snap\n \n // Left arm pulls back (hikite)\n .rotate(BoneName.SHOULDER_L, -0.4, 0.2, 0.15)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 340ms: Strike-1 peak and transition ===\n .at(0.34, \"linear\")\n .rotate(BoneName.SPINE_UPPER, 0.09, 0.1, 0)\n \n // Right arm at peak extension\n .rotate(BoneName.SHOULDER_R, -0.75, 0.2, -0.5)\n .rotate(BoneName.ELBOW_R, 0, 0, -0.05)\n .rotate(BoneName.WRIST_R, 0.1, 0, 0)\n \n // Left arm begins chamber for strike-2\n .rotate(BoneName.SHOULDER_L, -0.35, 0.1, 0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // STRIKE-2 PHASE (340-580ms) - Left Solar Plexus Strike (좌측 명치)\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 400ms: Transition - Right retracts, left chambers ===\n .at(0.4, \"ease-in-out\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0, 0) // Center torso\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n .rotate(BoneName.HEAD, 0.05, 0, 0)\n \n // Right arm retracts quickly\n .rotate(BoneName.SHOULDER_R, -0.55, -0.1, -0.25)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .rotate(BoneName.WRIST_R, -0.05, -0.1, 0)\n \n // Left arm chambers\n .rotate(BoneName.SHOULDER_L, -0.3, 0.05, 0.05)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.75)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // === Keyframe 500ms: Strike-2 extension to body ===\n .at(0.5, \"ease-out\")\n .rotate(BoneName.SPINE_UPPER, 0.1, -0.08, 0) // Rotate for left strike\n .rotate(BoneName.SPINE_MIDDLE, 0.07, -0.06, 0)\n \n // Left arm extends to solar plexus\n .rotate(BoneName.SHOULDER_L, -0.7, -0.15, 0.4)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.1) // Nearly straight\n .rotate(BoneName.WRIST_L, 0.08, 0, 0) // Wrist snap\n \n // Right arm counter-pulls\n .rotate(BoneName.SHOULDER_R, -0.4, -0.2, -0.15)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"left\")\n \n // === Keyframe 580ms: Strike-2 peak and transition ===\n .at(0.58, \"linear\")\n .rotate(BoneName.SPINE_UPPER, 0.11, -0.1, 0)\n \n // Left arm at peak extension\n .rotate(BoneName.SHOULDER_L, -0.75, -0.2, 0.5)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.05)\n .rotate(BoneName.WRIST_L, 0.1, 0, 0)\n \n // Right arm begins chamber for strike-3\n .rotate(BoneName.SHOULDER_R, -0.35, -0.15, -0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, -1.5)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // STRIKE-3 PHASE (580-820ms) - Right Carotid Strike (우측 경동맥)\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 640ms: Transition - Left retracts, right chambers ===\n .at(0.64, \"ease-in-out\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0, 0) // Center torso\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n \n // Left arm retracts\n .rotate(BoneName.SHOULDER_L, -0.5, 0.2, 0.2)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.5)\n \n // Right arm chambers high\n .rotate(BoneName.SHOULDER_R, -0.3, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, -1.7)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // === Keyframe 740ms: Strike-3 extension to carotid ===\n .at(0.74, \"ease-out\")\n .rotate(BoneName.SPINE_UPPER, 0.1, 0.12, 0) // Rotate for right strike\n .rotate(BoneName.SPINE_MIDDLE, 0.07, 0.09, 0)\n .rotate(BoneName.HEAD, 0.06, 0.08, 0)\n \n // Right arm extends to carotid (slight upward angle)\n .rotate(BoneName.SHOULDER_R, -0.72, 0.18, -0.45)\n .rotate(BoneName.ELBOW_R, 0, 0, -0.08) // Nearly straight\n .rotate(BoneName.WRIST_R, 0.09, 0.05, 0) // Wrist snap + upward angle\n \n // Left arm counter-pulls\n .rotate(BoneName.SHOULDER_L, -0.35, 0.15, 0.12)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.65)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 820ms: Strike-3 peak ===\n .at(0.82, \"linear\")\n .rotate(BoneName.SPINE_UPPER, 0.11, 0.15, 0)\n \n // Right arm at peak extension\n .rotate(BoneName.SHOULDER_R, -0.76, 0.22, -0.52)\n .rotate(BoneName.ELBOW_R, 0, 0, -0.05)\n .rotate(BoneName.WRIST_R, 0.11, 0.06, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // RECOVERY PHASE (820-980ms) - Return to Guard (복귀)\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 900ms: Begin recovery ===\n .at(0.9, \"ease-in\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0.08, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0.05, 0)\n .rotate(BoneName.HEAD, 0.05, 0.03, 0)\n \n .rotate(BoneName.SHOULDER_R, -0.55, -0.15, -0.25)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .rotate(BoneName.WRIST_R, -0.05, -0.1, 0)\n \n .rotate(BoneName.SHOULDER_L, -0.48, 0.3, 0.22)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.45)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // === Keyframe 980ms: Return to guard - Ready for continuation ===\n .at(0.98, \"ease-out\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.HEAD, 0.05, 0, 0)\n \n // Right arm: Chambered guard\n .rotate(BoneName.SHOULDER_R, -0.5, -0.3, -0.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5)\n .rotate(BoneName.WRIST_R, -0.1, -0.15, 0)\n \n // Left arm: Guard maintained\n .rotate(BoneName.SHOULDER_L, -0.5, 0.35, 0.25)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.WRIST_L, -0.1, 0.15, 0)\n \n // Legs: Stable stance\n .rotate(BoneName.HIP_R, 0.15, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.HIP_L, 0.1, 0, 0)\n .rotate(BoneName.KNEE_L, -0.22, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\") // Both hands ready for immediate follow-up\n .build();\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"LiTechniqueAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/LiTechniqueAnimations.ts"],"sourcesContent":["/**\n * ☲ Li (리) - Fire Technique Animations\n *\n * Precision nerve strike technique animations for the Li Fire trigram (리괘).\n * Emphasizes surgical spear-hand strikes, speed combinations, and vital point targeting.\n *\n * **Spear-Hand Formation**: Index and middle fingers extended, ring/pinky curled.\n * This hand formation is applied via withSpearHand() method from MartialArtsAnimationBuilder.\n * Individual finger bones are not modeled in the current skeletal system; finger positions\n * are expressed through wrist angles and hand pose metadata.\n *\n * Philosophy: 외과적 정밀성 (Surgical Precision), 속도의 연속성 (Continuity of Speed)\n * Martial Art Origin: 태권도 정밀 타격 (Taekwondo Precision Strikes)\n * Target Areas: 경동맥 (Carotid), 태양혈 (Temple), 명치 (Solar Plexus), 신경총 (Nerve Clusters)\n *\n * @module systems/animation/catalogs/LiTechniqueAnimations\n * @category Animation - Li Trigram Techniques\n * @korean 리괘기술애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { BoneName } from \"@/types/skeletal\";\nimport { MartialArtsAnimationBuilder } from \"../builders/MartialArtsAnimationBuilder\";\n\n/**\n * Li Fire Spear Animation (화염지창)\n *\n * Precision spear-hand thrust to nerve cluster with explosive penetration.\n * Wind-up cocks spear-hand back to ear, strike extends fully with wrist snap,\n * recovery maintains readiness for follow-up strikes.\n *\n * **Korean Philosophy**: 화염의 창 (Flame's Spear)\n * - Spear-hand formation: Index and middle fingers extended, ring/pinky curled\n * - Wind-up: Cocks back to ear level for maximum thrust potential\n * - Strike: Explosive linear thrust targeting nerve cluster\n * - Snap: Wrist snap on impact increases penetration depth\n * - Recovery: Quick retraction maintains offensive pressure\n *\n * **Target Vital Points** (급소):\n * - 경동맥 (Gyeongdongmaek - Carotid nerve cluster): Consciousness disruption\n * - 태양혈 (Taeyanghyeol - Temple): Concussion and disorientation\n * - 명치 (Myeongchi - Solar plexus): Breath disruption and paralysis\n *\n * **Anatomical Mechanics**:\n * - Wind-up: Shoulder rotation -15°, elbow flexion 115° (near ear)\n * - Extension: Shoulder forward 50°, elbow extends to 5° (nearly straight)\n * - Wrist snap: Dorsiflexion 5° on impact for penetration\n * - Hip thrust: Forward thrust 18° for power transfer\n * - Spine rotation: Counter-rotation 15° for torque generation\n *\n * **Frame Breakdown** (60fps target):\n * - Total: 18 frames (1000ms / 55.56ms per frame ≈ 18 frames)\n * - Wind-up: Frames 0-5 (280ms) - Coiling phase\n * - Strike: Frames 6-13 (440ms) - Explosive thrust and impact\n * - Recovery: Frames 14-18 (280ms) - Retraction and guard reset\n *\n * @duration 1000ms (1.0 seconds)\n * @frames 18 total (5 wind-up, 8 strike, 5 recovery)\n * @korean 화염지창\n */\nexport const LI_FIRE_SPEAR_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"li_fire_spear\", \"화염지창\")\n .asAttack(1.0)\n \n // ═══════════════════════════════════════════════════════════════════════\n // WIND-UP PHASE (0-280ms, Frames 0-5) - 준비 단계\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 0ms: Initial guard position ===\n .at(0, \"linear\")\n // Torso: Neutral ready position\n .rotate(BoneName.SPINE_UPPER, 0.08, -0.05, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, -0.03, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, -0.02, 0)\n .rotate(BoneName.PELVIS, 0, -0.05, 0)\n \n // Right arm: Starting guard position\n .rotate(BoneName.SHOULDER_R, -0.5, -0.3, -0.2) // Guard at chest\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5) // Bent 90°\n .rotate(BoneName.WRIST_R, -0.1, -0.15, 0)\n \n // Left arm: Stays in guard\n .rotate(BoneName.SHOULDER_L, -0.5, 0.35, 0.25)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.WRIST_L, -0.1, 0.15, 0)\n \n // Legs: Stable stance\n .rotate(BoneName.HIP_R, 0.15, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.HIP_L, 0.1, 0, 0)\n .rotate(BoneName.KNEE_L, -0.22, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\") // Right hand in spear-hand\n \n // === Keyframe 140ms: Mid-wind-up - Cocking begins ===\n .at(0.14, \"ease-in\")\n // Torso: Begins rotation for power\n .rotate(BoneName.SPINE_UPPER, 0.05, -0.12, 0) // Coiling rotation\n .rotate(BoneName.SPINE_MIDDLE, 0.03, -0.08, 0)\n .rotate(BoneName.SPINE_LOWER, 0.02, -0.05, 0)\n .rotate(BoneName.PELVIS, 0, -0.08, 0)\n \n // Right arm: Moving back toward ear\n .rotate(BoneName.SHOULDER_R, -0.35, -0.15, 0.1) // Shoulder pulls back\n .rotate(BoneName.ELBOW_R, 0, 0, -1.8) // Elbow bends tighter, moving to ear\n .rotate(BoneName.WRIST_R, -0.12, -0.1, 0) // Wrist cocked back\n \n // Left arm: Guard maintained\n .rotate(BoneName.SHOULDER_L, -0.55, 0.4, 0.28)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.35)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 280ms: Maximum wind-up - Spear-hand at ear ===\n .at(0.28, \"ease-out\")\n // Torso: Maximum coil rotation\n .rotate(BoneName.SPINE_UPPER, 0, -0.15, 0) // Fully coiled\n .rotate(BoneName.SPINE_MIDDLE, 0, -0.1, 0)\n .rotate(BoneName.SPINE_LOWER, 0, -0.06, 0)\n .rotate(BoneName.PELVIS, 0, -0.12, 0)\n \n // Right arm: Cocked back near ear - MAXIMUM chamber\n .rotate(BoneName.SHOULDER_R, -0.25, 0, 0.25) // Shoulder rotated back high\n .rotate(BoneName.ELBOW_R, 0, 0, -2.0) // Elbow near ear level (115° flexion)\n .rotate(BoneName.WRIST_R, -0.15, 0, 0) // Wrist cocked for thrust\n \n // Left arm: Extended for balance\n .rotate(BoneName.SHOULDER_L, -0.6, 0.45, 0.3)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.3)\n \n // Legs: Stable base for explosive thrust\n .rotate(BoneName.HIP_R, 0.12, 0, 0)\n .rotate(BoneName.KNEE_R, -0.28, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // STRIKE PHASE (280-720ms, Frames 6-13) - 타격 단계\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 440ms: Mid-strike - Explosive thrust begins ===\n .at(0.44, \"ease-out\")\n // Torso: Explosively uncoils and thrusts forward\n .rotate(BoneName.SPINE_UPPER, 0.08, 0.1, 0) // Counter-rotation releases\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0.08, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0.05, 0)\n .rotate(BoneName.PELVIS, 0, 0.08, 0)\n \n // Right arm: Explodes forward\n .rotate(BoneName.SHOULDER_R, -0.6, 0, -0.3) // Shoulder drives forward\n .rotate(BoneName.ELBOW_R, 0, 0, -0.5) // Elbow extends rapidly\n .rotate(BoneName.WRIST_R, -0.05, 0, 0) // Wrist aligning\n \n // Left arm: Pulls back (hikite)\n .rotate(BoneName.SHOULDER_L, -0.4, 0.2, 0.15)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n \n // Legs: Driving power from ground\n .rotate(BoneName.HIP_R, 0.18, 0, 0)\n .rotate(BoneName.KNEE_R, -0.32, 0, 0)\n .rotate(BoneName.HIP_L, 0.08, 0, 0)\n .rotate(BoneName.KNEE_L, -0.2, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 600ms: Near full extension - Approaching target ===\n .at(0.6, \"linear\")\n // Torso: Forward rotation continues\n .rotate(BoneName.SPINE_UPPER, 0.1, 0.15, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.07, 0.12, 0)\n .rotate(BoneName.SPINE_LOWER, 0.04, 0.08, 0)\n .rotate(BoneName.PELVIS, 0.02, 0.12, 0)\n \n // Right arm: Near full extension\n .rotate(BoneName.SHOULDER_R, -0.7, 0, -0.5) // Maximum forward\n .rotate(BoneName.ELBOW_R, 0, 0, -0.15) // Nearly straight (15° remaining)\n .rotate(BoneName.WRIST_R, 0, 0, 0) // Wrist aligned for impact\n \n // Left arm: Fully retracted (hikite)\n .rotate(BoneName.SHOULDER_L, -0.3, 0.1, 0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 720ms: IMPACT - Full extension with wrist snap ===\n .at(0.72, \"ease-out\")\n // Torso: Maximum forward position at impact\n .rotate(BoneName.SPINE_UPPER, 0.12, 0.2, 0) // Peak forward thrust\n .rotate(BoneName.SPINE_MIDDLE, 0.08, 0.15, 0)\n .rotate(BoneName.SPINE_LOWER, 0.05, 0.1, 0)\n .rotate(BoneName.PELVIS, 0.03, 0.15, 0)\n \n // Right arm: FULL EXTENSION with wrist snap\n .rotate(BoneName.SHOULDER_R, -0.75, 0, -0.6) // Complete extension\n .rotate(BoneName.ELBOW_R, 0, 0, -0.05) // Nearly straight (5° for safety)\n .rotate(BoneName.WRIST_R, 0.09, 0, 0) // WRIST SNAP - dorsiflexion/extension for penetration (in this rig, positive X = dorsiflexion)\n \n // NOTE: Finger rigidity expressed through hand pose (spear-hand)\n // Individual finger bones not available in current skeletal system\n \n // Left arm: Counter-pull (hikite) maximized\n .rotate(BoneName.SHOULDER_L, -0.25, 0.05, 0.05)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.75)\n \n // Legs: Maximum power transfer\n .rotate(BoneName.HIP_R, 0.2, 0, 0)\n .rotate(BoneName.KNEE_R, -0.35, 0, 0)\n .rotate(BoneName.HIP_L, 0.05, 0, 0)\n .rotate(BoneName.KNEE_L, -0.18, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // RECOVERY PHASE (720-1000ms, Frames 14-18) - 회수 단계\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 820ms: Begin retraction ===\n .at(0.82, \"ease-in\")\n // Torso: Begins return to neutral\n .rotate(BoneName.SPINE_UPPER, 0.1, 0.12, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.06, 0.09, 0)\n .rotate(BoneName.SPINE_LOWER, 0.04, 0.06, 0)\n .rotate(BoneName.PELVIS, 0.02, 0.08, 0)\n \n // Right arm: Retracts from extension\n .rotate(BoneName.SHOULDER_R, -0.65, 0, -0.4)\n .rotate(BoneName.ELBOW_R, 0, 0, -0.8) // Elbow bends during retraction\n .rotate(BoneName.WRIST_R, 0, 0, 0) // Wrist neutral\n \n // Left arm: Returns to guard\n .rotate(BoneName.SHOULDER_L, -0.45, 0.25, 0.2)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.5)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 920ms: Continued retraction ===\n .at(0.92, \"ease-in-out\")\n // Torso: Nearly back to guard\n .rotate(BoneName.SPINE_UPPER, 0.08, 0.05, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0.03, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0.02, 0)\n .rotate(BoneName.PELVIS, 0, 0.03, 0)\n \n // Right arm: Returns to chambered guard\n .rotate(BoneName.SHOULDER_R, -0.55, -0.2, -0.25)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3) // Elbow bends back to guard angle\n .rotate(BoneName.WRIST_R, -0.08, -0.12, 0)\n \n // Left arm: Guard position\n .rotate(BoneName.SHOULDER_L, -0.5, 0.32, 0.23)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.42)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 1000ms: Return to guard - Ready for next strike ===\n .at(1.0, \"ease-out\")\n // Torso: Neutral guard position\n .rotate(BoneName.SPINE_UPPER, 0.08, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n \n // Right arm: Chambered guard (ready for immediate re-strike)\n .rotate(BoneName.SHOULDER_R, -0.5, -0.3, -0.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5)\n .rotate(BoneName.WRIST_R, -0.1, -0.15, 0)\n \n // Left arm: Guard maintained\n .rotate(BoneName.SHOULDER_L, -0.5, 0.35, 0.25)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.WRIST_L, -0.1, 0.15, 0)\n \n // Legs: Stable stance restored\n .rotate(BoneName.HIP_R, 0.15, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.HIP_L, 0.1, 0, 0)\n .rotate(BoneName.KNEE_L, -0.22, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\") // Both hands ready in spear-hand\n .build();\n\n/**\n * Li Nerve Strike Combo Animation (화염 연속타)\n *\n * Three rapid spear-hand strikes targeting different nerve clusters in succession.\n * Speed combinations with minimal recovery between strikes emphasize Li's\n * continuous pressure philosophy (속도 연속 공격).\n *\n * **Korean Philosophy**: 연속 화염 (Continuous Flame)\n * - Strike 1: High target (temple/carotid) with right spear-hand\n * - Strike 2: Mid target (solar plexus) with left spear-hand\n * - Strike 3: High target (opposite temple) with right spear-hand\n * - Minimal recovery between strikes maintains offensive pressure\n * - Each strike targets different nerve cluster for cumulative effect\n *\n * **Target Progression** (급소 순서):\n * 1. **태양혈** (Taeyanghyeol - Temple): Disorientation and vision disruption\n * 2. **명치** (Myeongchi - Solar Plexus): Breath disruption and diaphragm paralysis\n * 3. **경동맥** (Gyeongdongmaek - Carotid): Consciousness loss and blood flow disruption\n *\n * **Biomechanics**:\n * - Setup: Quick chambering without telegraphing\n * - Strike-1: 45° angle from guard, 4-frame execution\n * - Transition-1: Immediate switch to opposite hand, 2-frame window\n * - Strike-2: Linear thrust to body, 4-frame execution\n * - Transition-2: Return to first hand, 2-frame window\n * - Strike-3: Rising strike to head, 4-frame execution\n * - Recovery: Quick return to guard maintaining pressure\n *\n * **Speed Mechanics**:\n * - Strike speed: ~240ms per strike (4 frames at 60fps × 16.67ms)\n * - Recovery: ~67ms between strikes (4 frames × 16.67ms)\n * - Total combo: ~980ms (under 1 second for full 3-strike sequence)\n *\n * **Frame Breakdown** (60fps target):\n * - Total: 22 frames (980ms / 44.5ms per frame ≈ 22 frames)\n * - Setup: Frames 0-3 (100ms) - Quick chamber\n * - Strike-1: Frames 4-7 (240ms) - Right temple strike\n * - Strike-2: Frames 8-11 (240ms) - Left solar plexus strike\n * - Strike-3: Frames 12-15 (240ms) - Right carotid strike\n * - Recovery: Frames 16-22 (160ms) - Return to guard\n *\n * @duration 980ms (~1.0 seconds)\n * @frames 22 total (6 setup, 4+4+4 strikes, 4 recovery)\n * @korean 화염연속타\n */\nexport const LI_NERVE_STRIKE_COMBO: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"li_nerve_strike_combo\", \"화염 연속타\")\n .asAttack(0.98)\n \n // ═══════════════════════════════════════════════════════════════════════\n // SETUP PHASE (0-100ms, Frames 0-3) - 준비\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 0ms: Guard position ===\n .at(0, \"linear\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n \n .rotate(BoneName.SHOULDER_R, -0.5, -0.3, -0.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5)\n .rotate(BoneName.WRIST_R, -0.1, -0.15, 0)\n \n .rotate(BoneName.SHOULDER_L, -0.5, 0.35, 0.25)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.WRIST_L, -0.1, 0.15, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // === Keyframe 100ms: Quick chamber for strike-1 ===\n .at(0.1, \"ease-out\")\n .rotate(BoneName.SPINE_UPPER, 0.05, -0.08, 0) // Slight coil\n .rotate(BoneName.SPINE_MIDDLE, 0.03, -0.05, 0)\n \n // Right arm chambers quickly\n .rotate(BoneName.SHOULDER_R, -0.4, -0.2, 0.15)\n .rotate(BoneName.ELBOW_R, 0, 0, -1.6) // Quick cock back\n .rotate(BoneName.WRIST_R, -0.12, -0.1, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // STRIKE-1 PHASE (100-340ms) - Right Temple Strike (우측 태양혈)\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 220ms: Strike-1 extension ===\n .at(0.22, \"ease-out\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0.08, 0) // Uncoil and thrust\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0.06, 0)\n .rotate(BoneName.HEAD, 0.05, 0.05, 0) // Eyes track target\n \n // Right arm extends to temple\n .rotate(BoneName.SHOULDER_R, -0.7, 0.15, -0.4)\n .rotate(BoneName.ELBOW_R, 0, 0, -0.1) // Nearly straight\n .rotate(BoneName.WRIST_R, 0.08, 0, 0) // Wrist snap\n \n // Left arm pulls back (hikite)\n .rotate(BoneName.SHOULDER_L, -0.4, 0.2, 0.15)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 340ms: Strike-1 peak and transition ===\n .at(0.34, \"linear\")\n .rotate(BoneName.SPINE_UPPER, 0.09, 0.1, 0)\n \n // Right arm at peak extension\n .rotate(BoneName.SHOULDER_R, -0.75, 0.2, -0.5)\n .rotate(BoneName.ELBOW_R, 0, 0, -0.05)\n .rotate(BoneName.WRIST_R, 0.1, 0, 0)\n \n // Left arm begins chamber for strike-2\n .rotate(BoneName.SHOULDER_L, -0.35, 0.1, 0.1)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.7)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // STRIKE-2 PHASE (340-580ms) - Left Solar Plexus Strike (좌측 명치)\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 400ms: Transition - Right retracts, left chambers ===\n .at(0.4, \"ease-in-out\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0, 0) // Center torso\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n .rotate(BoneName.HEAD, 0.05, 0, 0)\n \n // Right arm retracts quickly\n .rotate(BoneName.SHOULDER_R, -0.55, -0.1, -0.25)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.2)\n .rotate(BoneName.WRIST_R, -0.05, -0.1, 0)\n \n // Left arm chambers\n .rotate(BoneName.SHOULDER_L, -0.3, 0.05, 0.05)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.75)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // === Keyframe 500ms: Strike-2 extension to body ===\n .at(0.5, \"ease-out\")\n .rotate(BoneName.SPINE_UPPER, 0.1, -0.08, 0) // Rotate for left strike\n .rotate(BoneName.SPINE_MIDDLE, 0.07, -0.06, 0)\n \n // Left arm extends to solar plexus\n .rotate(BoneName.SHOULDER_L, -0.7, -0.15, 0.4)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.1) // Nearly straight\n .rotate(BoneName.WRIST_L, 0.08, 0, 0) // Wrist snap\n \n // Right arm counter-pulls\n .rotate(BoneName.SHOULDER_R, -0.4, -0.2, -0.15)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"left\")\n \n // === Keyframe 580ms: Strike-2 peak and transition ===\n .at(0.58, \"linear\")\n .rotate(BoneName.SPINE_UPPER, 0.11, -0.1, 0)\n \n // Left arm at peak extension\n .rotate(BoneName.SHOULDER_L, -0.75, -0.2, 0.5)\n .rotate(BoneName.ELBOW_L, 0, 0, -0.05)\n .rotate(BoneName.WRIST_L, 0.1, 0, 0)\n \n // Right arm begins chamber for strike-3\n .rotate(BoneName.SHOULDER_R, -0.35, -0.15, -0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, -1.5)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // STRIKE-3 PHASE (580-820ms) - Right Carotid Strike (우측 경동맥)\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 640ms: Transition - Left retracts, right chambers ===\n .at(0.64, \"ease-in-out\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0, 0) // Center torso\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n \n // Left arm retracts\n .rotate(BoneName.SHOULDER_L, -0.5, 0.2, 0.2)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.5)\n \n // Right arm chambers high\n .rotate(BoneName.SHOULDER_R, -0.3, 0, 0.1)\n .rotate(BoneName.ELBOW_R, 0, 0, -1.7)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // === Keyframe 740ms: Strike-3 extension to carotid ===\n .at(0.74, \"ease-out\")\n .rotate(BoneName.SPINE_UPPER, 0.1, 0.12, 0) // Rotate for right strike\n .rotate(BoneName.SPINE_MIDDLE, 0.07, 0.09, 0)\n .rotate(BoneName.HEAD, 0.06, 0.08, 0)\n \n // Right arm extends to carotid (slight upward angle)\n .rotate(BoneName.SHOULDER_R, -0.72, 0.18, -0.45)\n .rotate(BoneName.ELBOW_R, 0, 0, -0.08) // Nearly straight\n .rotate(BoneName.WRIST_R, 0.09, 0.05, 0) // Wrist snap + upward angle\n \n // Left arm counter-pulls\n .rotate(BoneName.SHOULDER_L, -0.35, 0.15, 0.12)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.65)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // === Keyframe 820ms: Strike-3 peak ===\n .at(0.82, \"linear\")\n .rotate(BoneName.SPINE_UPPER, 0.11, 0.15, 0)\n \n // Right arm at peak extension\n .rotate(BoneName.SHOULDER_R, -0.76, 0.22, -0.52)\n .rotate(BoneName.ELBOW_R, 0, 0, -0.05)\n .rotate(BoneName.WRIST_R, 0.11, 0.06, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"right\")\n \n // ═══════════════════════════════════════════════════════════════════════\n // RECOVERY PHASE (820-980ms) - Return to Guard (복귀)\n // ═══════════════════════════════════════════════════════════════════════\n \n // === Keyframe 900ms: Begin recovery ===\n .at(0.9, \"ease-in\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0.08, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0.05, 0)\n .rotate(BoneName.HEAD, 0.05, 0.03, 0)\n \n .rotate(BoneName.SHOULDER_R, -0.55, -0.15, -0.25)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.3)\n .rotate(BoneName.WRIST_R, -0.05, -0.1, 0)\n \n .rotate(BoneName.SHOULDER_L, -0.48, 0.3, 0.22)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.45)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\")\n \n // === Keyframe 980ms: Return to guard - Ready for continuation ===\n .at(0.98, \"ease-out\")\n .rotate(BoneName.SPINE_UPPER, 0.08, 0, 0)\n .rotate(BoneName.SPINE_MIDDLE, 0.05, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0.03, 0, 0)\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.HEAD, 0.05, 0, 0)\n \n // Right arm: Chambered guard\n .rotate(BoneName.SHOULDER_R, -0.5, -0.3, -0.2)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.5)\n .rotate(BoneName.WRIST_R, -0.1, -0.15, 0)\n \n // Left arm: Guard maintained\n .rotate(BoneName.SHOULDER_L, -0.5, 0.35, 0.25)\n .rotate(BoneName.ELBOW_L, 0, 0, -1.4)\n .rotate(BoneName.WRIST_L, -0.1, 0.15, 0)\n \n // Legs: Stable stance\n .rotate(BoneName.HIP_R, 0.15, 0, 0)\n .rotate(BoneName.KNEE_R, -0.25, 0, 0)\n .rotate(BoneName.HIP_L, 0.1, 0, 0)\n .rotate(BoneName.KNEE_L, -0.22, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .withSpearHand(\"both\") // Both hands ready for immediate follow-up\n .build();\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MovementAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/MovementAnimations.ts"],"sourcesContent":["/**\n * Movement Animations Module\n *\n * Footwork, dodges, and movement techniques (이동기술).\n * Positioning and distance management animations.\n * Uses MartialArtsAnimationBuilder for readable, martial arts expert-friendly code.\n *\n * 이동 애니메이션 모듈\n *\n * @module systems/animation/MovementAnimations\n * @korean 이동애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { BoneName } from \"@/types/skeletal\";\nimport { MartialArtsAnimationBuilder } from \"../builders/MartialArtsAnimationBuilder\";\nimport { toRadians } from \"@/utils/math\";\n\n// ═══════════════════════════════════════════════════════════════════════════\n// BASIC FOOTWORK (기본 풋워크)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Forward Step - 전진스텝 with Korean Martial Arts Weight Transfer\n *\n * Advancing step toward opponent with authentic Korean martial arts footwork mechanics.\n * Implements proper weight transfer (체중이동), stepping foot mechanics (디딤발),\n * and pivot foot stability (축발) principles.\n *\n * Weight Transfer Mechanics (체중이동 원리):\n * - Phase 1 (0-0.15s): Weight shift to back foot, front leg prepares (준비단계)\n * - Phase 2 (0.15-0.35s): Front foot lifts and extends forward (이동단계)\n * - Phase 3 (0.35-0.45s): Heel strikes ground, weight begins transfer (착지단계)\n * - Phase 4 (0.45-0.6s): Complete weight transfer, foot rolls to flat (안정단계)\n *\n * Korean Martial Arts Principles:\n * - 디딤발 (Didimbal): Stepping foot lands heel-first, rolls to ball\n * - 축발 (Chukbal): Pivot foot maintains balance during weight shift\n * - 체중이동 (Chejung Idong): Weight transfers smoothly, not abruptly\n * - 중심이동 (Jungsim Idong): Center of mass moves with body\n *\n * @korean 전진스텝애니메이션_체중이동\n */\nexport const MOVEMENT_FORWARD_STEP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_forward_step\", \"전진스텝\")\n .asMovement(0.6)\n // Phase 1: Preparation - Weight shift to back leg (준비단계)\n .at(0, \"linear\")\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.03, \"ease-out\")\n .position(BoneName.PELVIS, 0.05, 0, 0) // Hip shifts over back leg\n .rotate(BoneName.KNEE_R, toRadians(-8), 0, 0) // Back leg bends to accept weight\n .rotate(BoneName.KNEE_L, toRadians(-3), 0, 0) // Front leg lightens\n .done<MartialArtsAnimationBuilder>()\n // Phase 2: Lift step leg (이동단계 - 들어올리기)\n .at(0.15, \"ease-out\")\n .rotate(BoneName.HIP_L, toRadians(-30), 0, 0) // Knee lifts\n .rotate(BoneName.KNEE_L, toRadians(-40), 0, 0) // Shin forward\n .position(BoneName.PELVIS, 0.05, -0.02, 0) // Drop slightly for power\n .rotate(BoneName.KNEE_R, toRadians(-10), 0, 0) // Back leg bears full weight\n .done<MartialArtsAnimationBuilder>()\n // Phase 3: Extend forward (이동단계 - 앞으로)\n .at(0.25, \"linear\")\n .rotate(BoneName.HIP_L, toRadians(-15), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-10), 0, 0)\n .rotate(BoneName.FOOT_L, toRadians(25), 0, 0) // Toe up, heel ready\n .position(BoneName.PELVIS, 0.03, -0.025, 0.15) // Forward, slightly lower\n .done<MartialArtsAnimationBuilder>()\n // Phase 4: Heel strike (착지단계 - 뒤꿈치 착지)\n .at(0.35, \"linear\")\n .rotate(BoneName.HIP_L, toRadians(-10), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-8), 0, 0)\n .rotate(BoneName.FOOT_L, toRadians(20), 0, 0) // Heel down, toe still up - 디딤발 (Didimbal)\n .position(BoneName.PELVIS, 0, -0.03, 0.3) // Forward and lower on impact\n .rotate(BoneName.KNEE_R, toRadians(-6), 0, 0) // Back leg still supporting\n .done<MartialArtsAnimationBuilder>()\n // Phase 5: Weight transfer begins (체중이동 시작)\n .at(0.45, \"ease-in\")\n .position(BoneName.PELVIS, -0.03, -0.02, 0.35) // Hip shifts toward front leg - 체중이동 (Chejung Idong)\n .rotate(BoneName.KNEE_L, toRadians(-12), 0, 0) // Front leg accepts weight\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0) // Back leg relaxes\n .rotate(BoneName.FOOT_L, toRadians(5), 0, 0) // Foot rolling to flat\n .done<MartialArtsAnimationBuilder>()\n // Phase 6: Complete transfer and stabilization (안정단계)\n .at(0.6, \"ease-in\")\n .position(BoneName.PELVIS, -0.05, 0, 0.4) // Center over front leg\n .rotate(BoneName.KNEE_L, toRadians(-10), 0, 0) // Front leg stable\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0) // Back leg light\n .rotate(BoneName.FOOT_L, toRadians(-5), 0, 0) // Foot completely flat, slight pressure on ball\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3) // Guard maintained throughout\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Backward Step - 후진스텝 with Korean Martial Arts Weight Transfer\n *\n * Retreating step from opponent with authentic Korean martial arts footwork.\n * Implements proper rear weight transfer and defensive positioning.\n *\n * Weight Transfer Mechanics (후퇴 체중이동):\n * - Phase 1 (0-0.15s): Weight shift to front foot, back leg prepares\n * - Phase 2 (0.15-0.35s): Back foot lifts and extends backward\n * - Phase 3 (0.35-0.45s): Ball of foot touches down, weight begins transfer\n * - Phase 4 (0.45-0.6s): Complete weight transfer, maintain guard\n *\n * Korean Martial Arts Principles:\n * - Backward steps land on ball of foot first (unlike forward heel-first)\n * - Maintain forward-facing guard throughout retreat\n * - Center of mass moves smoothly backward\n * - Front leg remains ready to kick or defend\n *\n * @korean 후진스텝애니메이션_체중이동\n */\nexport const MOVEMENT_BACKWARD_STEP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_backward_step\", \"후진스텝\")\n .asMovement(0.6)\n .at(0, \"linear\")\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.03, \"ease-out\")\n .position(BoneName.PELVIS, -0.05, 0, 0) // Weight shifts to front leg\n .rotate(BoneName.KNEE_L, toRadians(-8), 0, 0) // Front leg accepts weight\n .rotate(BoneName.KNEE_R, toRadians(-3), 0, 0) // Back leg lightens\n .done<MartialArtsAnimationBuilder>()\n .at(0.15, \"ease-out\")\n .rotate(BoneName.HIP_R, toRadians(20), 0, 0) // Hip extends back\n .rotate(BoneName.KNEE_R, toRadians(-25), 0, 0) // Knee lifts slightly\n .position(BoneName.PELVIS, -0.05, -0.015, 0)\n .rotate(BoneName.KNEE_L, toRadians(-10), 0, 0) // Front leg stable\n .done<MartialArtsAnimationBuilder>()\n .at(0.25, \"linear\")\n .rotate(BoneName.HIP_R, toRadians(12), 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-8), 0, 0)\n .rotate(BoneName.FOOT_R, toRadians(-15), 0, 0) // Ball of foot ready to land\n .position(BoneName.PELVIS, -0.03, -0.02, -0.15) // Backward motion\n .done<MartialArtsAnimationBuilder>()\n .at(0.35, \"linear\")\n .rotate(BoneName.HIP_R, toRadians(8), 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-6), 0, 0)\n .rotate(BoneName.FOOT_R, toRadians(-12), 0, 0) // Ball of foot contacts ground\n .position(BoneName.PELVIS, 0, -0.025, -0.3)\n .rotate(BoneName.KNEE_L, toRadians(-8), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.45, \"ease-in\")\n .position(BoneName.PELVIS, 0.03, -0.015, -0.35) // Weight transfers to back leg\n .rotate(BoneName.KNEE_R, toRadians(-10), 0, 0) // Back leg accepts weight\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0) // Front leg lightens\n .rotate(BoneName.FOOT_R, toRadians(-5), 0, 0) // Heel settles down\n .done<MartialArtsAnimationBuilder>()\n .at(0.6, \"ease-in\")\n .position(BoneName.PELVIS, 0.05, 0, -0.4) // Stable rear stance\n .rotate(BoneName.KNEE_R, toRadians(-8), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3) // Guard maintained\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Left Sidestep - 왼쪽측면스텝 with Korean Martial Arts Weight Transfer\n *\n * Lateral movement left with authentic Korean martial arts footwork.\n * Creates angle advantage while maintaining forward guard.\n *\n * Weight Transfer Mechanics (측면 체중이동):\n * - Phase 1: Weight shifts to right leg\n * - Phase 2: Left foot slides lateral\n * - Phase 3: Weight transfers smoothly to left\n * - Phase 4: Right foot follows, stance width maintained\n *\n * Korean Martial Arts Principles:\n * - Guard faces forward throughout (원형보 - Circular footwork)\n * - Pelvis rotates slightly to engage hip\n * - Spine counter-rotates to maintain guard orientation\n * - Smooth weight distribution prevents telegraphing\n *\n * @korean 왼쪽측면스텝애니메이션_체중이동\n */\nexport const MOVEMENT_SIDESTEP_LEFT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_sidestep_left\", \"왼쪽측면스텝\")\n .asMovement(0.5)\n .at(0, \"linear\")\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.08, \"ease-out\")\n .position(BoneName.PELVIS, 0.04, 0, 0) // Weight shifts to right leg\n .rotate(BoneName.PELVIS, 0, 0, toRadians(3)) // Slight tilt right\n .rotate(BoneName.KNEE_R, toRadians(-10), 0, 0) // Right leg accepts weight\n .rotate(BoneName.KNEE_L, toRadians(-3), 0, 0) // Left leg lightens\n .done<MartialArtsAnimationBuilder>()\n .at(0.18, \"linear\")\n .position(BoneName.PELVIS, 0.02, -0.01, 0) // Slight drop during slide\n .rotate(BoneName.PELVIS, 0, toRadians(5), toRadians(5)) // Hip engages for lateral movement\n .rotate(BoneName.SPINE_LOWER, 0, toRadians(-3), 0) // Counter-rotate to maintain guard\n .rotate(BoneName.KNEE_R, toRadians(-12), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.3, \"ease-in\")\n .position(BoneName.PELVIS, -0.15, 0, 0) // Lateral 15cm\n .rotate(BoneName.PELVIS, 0, toRadians(3), 0)\n .rotate(BoneName.SPINE_LOWER, 0, toRadians(-2), 0)\n .rotate(BoneName.KNEE_L, toRadians(-10), 0, 0) // Left leg accepts weight\n .rotate(BoneName.KNEE_R, toRadians(-6), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.5, \"ease-in\")\n .position(BoneName.PELVIS, -0.3, 0, 0) // Full 30cm lateral\n .rotate(BoneName.PELVIS, 0, 0, 0) // Return to neutral\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-8), 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-8), 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3) // Guard maintained forward\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Right Sidestep - 오른쪽측면스텝 with Korean Martial Arts Weight Transfer\n *\n * Lateral movement right with authentic Korean martial arts footwork.\n * Mirror of left sidestep.\n *\n * @korean 오른쪽측면스텝애니메이션_체중이동\n */\nexport const MOVEMENT_SIDESTEP_RIGHT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_sidestep_right\", \"오른쪽측면스텝\")\n .asMovement(0.5)\n .at(0, \"linear\")\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.08, \"ease-out\")\n .position(BoneName.PELVIS, -0.04, 0, 0) // Weight shifts to left leg\n .rotate(BoneName.PELVIS, 0, 0, toRadians(-3))\n .rotate(BoneName.KNEE_L, toRadians(-10), 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-3), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.18, \"linear\")\n .position(BoneName.PELVIS, -0.02, -0.01, 0) // Right foot slides lateral\n .rotate(BoneName.PELVIS, 0, toRadians(-5), toRadians(-5))\n .rotate(BoneName.SPINE_LOWER, 0, toRadians(3), 0)\n .rotate(BoneName.KNEE_L, toRadians(-12), 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.3, \"ease-in\")\n .position(BoneName.PELVIS, 0.15, 0, 0) // Weight begins transfer to right\n .rotate(BoneName.PELVIS, 0, toRadians(-3), 0)\n .rotate(BoneName.SPINE_LOWER, 0, toRadians(2), 0)\n .rotate(BoneName.KNEE_R, toRadians(-10), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-6), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.5, \"ease-in\")\n .position(BoneName.PELVIS, 0.3, 0, 0) // Stable lateral stance\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-8), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-8), 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3) // Guard maintained\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Step Drag - 스텝드래그\n *\n * Lead foot step with rear drag.\n * Maintains stance while moving.\n *\n * @korean 스텝드래그애니메이션\n */\nexport const MOVEMENT_STEP_DRAG_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_step_drag\", \"스텝드래그\")\n .asMovement(0.35)\n .step(0.12)\n .step(0.1) // Drag\n .recover(0.13)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// PIVOTS AND TURNS (피봇과 회전)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Left Pivot - 왼쪽피봇\n *\n * Pivot on lead foot to the left.\n * 45 degree angle change.\n *\n * @korean 왼쪽피봇애니메이션\n */\nexport const MOVEMENT_PIVOT_LEFT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_pivot_left\", \"왼쪽피봇\")\n .asMovement(0.28)\n .rotate(0.14)\n .recover(0.14)\n .build();\n\n/**\n * Right Pivot - 오른쪽피봇\n *\n * Pivot on lead foot to the right.\n * 45 degree angle change.\n *\n * @korean 오른쪽피봇애니메이션\n */\nexport const MOVEMENT_PIVOT_RIGHT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_pivot_right\", \"오른쪽피봇\")\n .asMovement(0.28)\n .rotate(0.14)\n .recover(0.14)\n .build();\n\n/**\n * Full Spin - 전체회전\n *\n * Complete 360 rotation.\n * For spinning attack setups.\n *\n * @korean 전체회전애니메이션\n */\nexport const MOVEMENT_FULL_SPIN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_full_spin\", \"전체회전\")\n .asMovement(0.4)\n .spin(0.25)\n .recover(0.15)\n .build();\n\n/**\n * Quarter Turn - 사분회전\n *\n * 90 degree turn.\n * Quick repositioning.\n *\n * @korean 사분회전애니메이션\n */\nexport const MOVEMENT_QUARTER_TURN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_quarter_turn\", \"사분회전\")\n .asMovement(0.25)\n .rotate(0.12)\n .recover(0.13)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// BOUNCING FOOTWORK (바운싱 풋워크)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Bounce Step - 바운스스텝\n *\n * Light bouncing movement.\n * Keeps fighter mobile.\n *\n * @korean 바운스스텝애니메이션\n */\nexport const MOVEMENT_BOUNCE_STEP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_bounce_step\", \"바운스스텝\")\n .asMovement(0.25)\n .step(0.08)\n .step(0.08)\n .recover(0.09)\n .build();\n\n/**\n * Switch Step - 스위치스텝\n *\n * Quick stance switch.\n * Changes lead foot.\n *\n * @korean 스위치스텝애니메이션\n */\nexport const MOVEMENT_SWITCH_STEP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_switch_step\", \"스위치스텝\")\n .asMovement(0.22)\n .jump(0.08)\n .step(0.08)\n .recover(0.06)\n .build();\n\n/**\n * Shuffle - 셔플\n *\n * Quick shuffle step.\n * Rapid forward movement.\n *\n * @korean 셔플애니메이션\n */\nexport const MOVEMENT_SHUFFLE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_shuffle\", \"셔플\")\n .asMovement(0.28)\n .step(0.08)\n .step(0.08)\n .step(0.06)\n .recover(0.06)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EVASIVE FOOTWORK (회피 풋워크)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Back Step - 백스텝\n *\n * Quick retreat step.\n * Creates distance rapidly.\n *\n * @korean 백스텝애니메이션\n */\nexport const MOVEMENT_BACK_STEP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_back_step\", \"백스텝\")\n .asMovement(0.25)\n .step(0.12)\n .recover(0.13)\n .build();\n\n/**\n * Circle Left - 서클왼쪽\n *\n * Circling movement to the left.\n * Maintains distance while repositioning.\n *\n * @korean 서클왼쪽애니메이션\n */\nexport const MOVEMENT_CIRCLE_LEFT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_circle_left\", \"서클왼쪽\")\n .asMovement(0.4)\n .shift(0.12)\n .step(0.12)\n .recover(0.16)\n .build();\n\n/**\n * Circle Right - 서클오른쪽\n *\n * Circling movement to the right.\n * Maintains distance while repositioning.\n *\n * @korean 서클오른쪽애니메이션\n */\nexport const MOVEMENT_CIRCLE_RIGHT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_circle_right\", \"서클오른쪽\")\n .asMovement(0.4)\n .shift(0.12)\n .step(0.12)\n .recover(0.16)\n .build();\n\n/**\n * Angle Off - 앵글오프\n *\n * Step at diagonal angle.\n * Creates superior position.\n *\n * @korean 앵글오프애니메이션\n */\nexport const MOVEMENT_ANGLE_OFF_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_angle_off\", \"앵글오프\")\n .asMovement(0.32)\n .shift(0.1)\n .step(0.1)\n .recover(0.12)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// STANCE CHANGES (스탠스 변경)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Orthodox to Southpaw - 오소독스투사우스포\n *\n * Stance switch orthodox to southpaw.\n * Changes fighting orientation.\n *\n * @korean 오소독스투사우스포애니메이션\n */\nexport const MOVEMENT_ORTHODOX_TO_SOUTHPAW_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"movement_orthodox_to_southpaw\",\n \"오소독스투사우스포\"\n )\n .asMovement(0.35)\n .jump(0.1)\n .rotate(0.12)\n .recover(0.13)\n .build();\n\n/**\n * Southpaw to Orthodox - 사우스포투오소독스\n *\n * Stance switch southpaw to orthodox.\n * Changes fighting orientation.\n *\n * @korean 사우스포투오소독스애니메이션\n */\nexport const MOVEMENT_SOUTHPAW_TO_ORTHODOX_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"movement_southpaw_to_orthodox\",\n \"사우스포투오소독스\"\n )\n .asMovement(0.35)\n .jump(0.1)\n .rotate(0.12)\n .recover(0.13)\n .build();\n\n/**\n * Drop Level - 드롭레벨\n *\n * Lower fighting stance.\n * For takedown or level change attacks.\n *\n * @korean 드롭레벨애니메이션\n */\nexport const MOVEMENT_DROP_LEVEL_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_drop_level\", \"드롭레벨\")\n .asMovement(0.3)\n .duck(0.15)\n .recover(0.15)\n .build();\n\n/**\n * Rise Up - 라이즈업\n *\n * Return to normal fighting stance.\n * Recovery from level change.\n *\n * @korean 라이즈업애니메이션\n */\nexport const MOVEMENT_RISE_UP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_rise_up\", \"라이즈업\")\n .asMovement(0.28)\n .lean(0.1) // Rise\n .recover(0.18)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// JUMPING MOVEMENTS (점프 이동)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Jump Back - 점프백\n *\n * Jumping retreat.\n * Maximum distance creation.\n *\n * @korean 점프백애니메이션\n */\nexport const MOVEMENT_JUMP_BACK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_jump_back\", \"점프백\")\n .asMovement(0.45)\n .jump(0.2)\n .recover(0.25)\n .build();\n\n/**\n * Jump In - 점프인\n *\n * Jumping advance.\n * Closes distance rapidly.\n *\n * @korean 점프인애니메이션\n */\nexport const MOVEMENT_JUMP_IN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_jump_in\", \"점프인\")\n .asMovement(0.45)\n .jump(0.2)\n .recover(0.25)\n .build();\n\n/**\n * Jump Aside - 점프사이드\n *\n * Jumping sideways.\n * Lateral evasion.\n *\n * @korean 점프사이드애니메이션\n */\nexport const MOVEMENT_JUMP_ASIDE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_jump_aside\", \"점프사이드\")\n .asMovement(0.42)\n .jump(0.18)\n .shift(0.1)\n .recover(0.14)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// DODGES (회피)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Duck - 덕\n *\n * Ducking under attack.\n * Low evasion.\n *\n * @korean 덕애니메이션\n */\nexport const MOVEMENT_DUCK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_duck\", \"덕\")\n .asMovement(0.3)\n .duck(0.15)\n .recover(0.15)\n .build();\n\n/**\n * Lean Back - 린백\n *\n * Leaning away from attack.\n * Upper body evasion.\n *\n * @korean 린백애니메이션\n */\nexport const MOVEMENT_LEAN_BACK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_lean_back\", \"린백\")\n .asMovement(0.28)\n .lean(0.14)\n .recover(0.14)\n .build();\n\n/**\n * Sway Left - 스웨이왼쪽\n *\n * Body sway to the left.\n * Subtle evasion.\n *\n * @korean 스웨이왼쪽애니메이션\n */\nexport const MOVEMENT_SWAY_LEFT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_sway_left\", \"스웨이왼쪽\")\n .asMovement(0.25)\n .bob(0.12)\n .recover(0.13)\n .build();\n\n/**\n * Sway Right - 스웨이오른쪽\n *\n * Body sway to the right.\n * Subtle evasion.\n *\n * @korean 스웨이오른쪽애니메이션\n */\nexport const MOVEMENT_SWAY_RIGHT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_sway_right\", \"스웨이오른쪽\")\n .asMovement(0.25)\n .bob(0.12)\n .recover(0.13)\n .build();\n\n/**\n * Bob and Weave - 밥앤위브\n *\n * U-shaped head movement.\n * Classic boxing evasion.\n *\n * @korean 밥앤위브애니메이션\n */\nexport const MOVEMENT_BOB_WEAVE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_bob_weave\", \"밥앤위브\")\n .asMovement(0.4)\n .bob(0.12)\n .weave(0.13)\n .recover(0.15)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// FEINTS (페인트)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Jab Feint - 잽페인트\n *\n * Fake jab movement.\n * Draws reaction.\n *\n * @korean 잽페인트애니메이션\n */\nexport const MOVEMENT_JAB_FEINT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_jab_feint\", \"잽페인트\")\n .asMovement(0.2)\n .punchWindup(0.08)\n .recover(0.12)\n .build();\n\n/**\n * Level Change Feint - 레벨체인지페인트\n *\n * Fake level drop.\n * Draws takedown defense.\n *\n * @korean 레벨체인지페인트애니메이션\n */\nexport const MOVEMENT_LEVEL_FEINT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_level_feint\", \"레벨체인지페인트\")\n .asMovement(0.25)\n .duck(0.1)\n .recover(0.15)\n .build();\n\n/**\n * Kick Feint - 킥페인트\n *\n * Fake kick chamber.\n * Draws leg check.\n *\n * @korean 킥페인트애니메이션\n */\nexport const MOVEMENT_KICK_FEINT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_kick_feint\", \"킥페인트\")\n .asMovement(0.25)\n .chamber(0.1)\n .recover(0.15)\n .build();\n\n/**\n * Step Feint - 스텝페인트\n *\n * Fake step forward.\n * Draws counter.\n *\n * @korean 스텝페인트애니메이션\n */\nexport const MOVEMENT_STEP_FEINT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_step_feint\", \"스텝페인트\")\n .asMovement(0.22)\n .step(0.08)\n .recover(0.14)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EXPORT MOVEMENT ANIMATION MAP\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Map of all movement animations for easy access\n * 이동 애니메이션 맵\n */\nexport const MOVEMENT_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation> =\n new Map([\n // Basic Footwork\n [\"movement_forward_step\", MOVEMENT_FORWARD_STEP_ANIMATION],\n [\"movement_backward_step\", MOVEMENT_BACKWARD_STEP_ANIMATION],\n [\"movement_sidestep_left\", MOVEMENT_SIDESTEP_LEFT_ANIMATION],\n [\"movement_sidestep_right\", MOVEMENT_SIDESTEP_RIGHT_ANIMATION],\n [\"movement_step_drag\", MOVEMENT_STEP_DRAG_ANIMATION],\n\n // Pivots and Turns\n [\"movement_pivot_left\", MOVEMENT_PIVOT_LEFT_ANIMATION],\n [\"movement_pivot_right\", MOVEMENT_PIVOT_RIGHT_ANIMATION],\n [\"movement_full_spin\", MOVEMENT_FULL_SPIN_ANIMATION],\n [\"movement_quarter_turn\", MOVEMENT_QUARTER_TURN_ANIMATION],\n\n // Bouncing Footwork\n [\"movement_bounce_step\", MOVEMENT_BOUNCE_STEP_ANIMATION],\n [\"movement_switch_step\", MOVEMENT_SWITCH_STEP_ANIMATION],\n [\"movement_shuffle\", MOVEMENT_SHUFFLE_ANIMATION],\n\n // Evasive Footwork\n [\"movement_back_step\", MOVEMENT_BACK_STEP_ANIMATION],\n [\"movement_circle_left\", MOVEMENT_CIRCLE_LEFT_ANIMATION],\n [\"movement_circle_right\", MOVEMENT_CIRCLE_RIGHT_ANIMATION],\n [\"movement_angle_off\", MOVEMENT_ANGLE_OFF_ANIMATION],\n\n // Stance Changes\n [\"movement_orthodox_to_southpaw\", MOVEMENT_ORTHODOX_TO_SOUTHPAW_ANIMATION],\n [\"movement_southpaw_to_orthodox\", MOVEMENT_SOUTHPAW_TO_ORTHODOX_ANIMATION],\n [\"movement_drop_level\", MOVEMENT_DROP_LEVEL_ANIMATION],\n [\"movement_rise_up\", MOVEMENT_RISE_UP_ANIMATION],\n\n // Jumping\n [\"movement_jump_back\", MOVEMENT_JUMP_BACK_ANIMATION],\n [\"movement_jump_in\", MOVEMENT_JUMP_IN_ANIMATION],\n [\"movement_jump_aside\", MOVEMENT_JUMP_ASIDE_ANIMATION],\n\n // Dodges\n [\"movement_duck\", MOVEMENT_DUCK_ANIMATION],\n [\"movement_lean_back\", MOVEMENT_LEAN_BACK_ANIMATION],\n [\"movement_sway_left\", MOVEMENT_SWAY_LEFT_ANIMATION],\n [\"movement_sway_right\", MOVEMENT_SWAY_RIGHT_ANIMATION],\n [\"movement_bob_weave\", MOVEMENT_BOB_WEAVE_ANIMATION],\n\n // Feints\n [\"movement_jab_feint\", MOVEMENT_JAB_FEINT_ANIMATION],\n [\"movement_level_feint\", MOVEMENT_LEVEL_FEINT_ANIMATION],\n [\"movement_kick_feint\", MOVEMENT_KICK_FEINT_ANIMATION],\n [\"movement_step_feint\", MOVEMENT_STEP_FEINT_ANIMATION],\n ]);\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MovementAnimations.js","names":[],"sources":["../../../../src/systems/animation/catalogs/MovementAnimations.ts"],"sourcesContent":["/**\n * Movement Animations Module\n *\n * Footwork, dodges, and movement techniques (이동기술).\n * Positioning and distance management animations.\n * Uses MartialArtsAnimationBuilder for readable, martial arts expert-friendly code.\n *\n * 이동 애니메이션 모듈\n *\n * @module systems/animation/MovementAnimations\n * @korean 이동애니메이션\n */\n\nimport type { SkeletalAnimation } from \"@/types/skeletal\";\nimport { BoneName } from \"@/types/skeletal\";\nimport { MartialArtsAnimationBuilder } from \"../builders/MartialArtsAnimationBuilder\";\nimport { toRadians } from \"@/utils/math\";\n\n// ═══════════════════════════════════════════════════════════════════════════\n// BASIC FOOTWORK (기본 풋워크)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Forward Step - 전진스텝 with Korean Martial Arts Weight Transfer\n *\n * Advancing step toward opponent with authentic Korean martial arts footwork mechanics.\n * Implements proper weight transfer (체중이동), stepping foot mechanics (디딤발),\n * and pivot foot stability (축발) principles.\n *\n * Weight Transfer Mechanics (체중이동 원리):\n * - Phase 1 (0-0.15s): Weight shift to back foot, front leg prepares (준비단계)\n * - Phase 2 (0.15-0.35s): Front foot lifts and extends forward (이동단계)\n * - Phase 3 (0.35-0.45s): Heel strikes ground, weight begins transfer (착지단계)\n * - Phase 4 (0.45-0.6s): Complete weight transfer, foot rolls to flat (안정단계)\n *\n * Korean Martial Arts Principles:\n * - 디딤발 (Didimbal): Stepping foot lands heel-first, rolls to ball\n * - 축발 (Chukbal): Pivot foot maintains balance during weight shift\n * - 체중이동 (Chejung Idong): Weight transfers smoothly, not abruptly\n * - 중심이동 (Jungsim Idong): Center of mass moves with body\n *\n * @korean 전진스텝애니메이션_체중이동\n */\nexport const MOVEMENT_FORWARD_STEP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_forward_step\", \"전진스텝\")\n .asMovement(0.6)\n // Phase 1: Preparation - Weight shift to back leg (준비단계)\n .at(0, \"linear\")\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.03, \"ease-out\")\n .position(BoneName.PELVIS, 0.05, 0, 0) // Hip shifts over back leg\n .rotate(BoneName.KNEE_R, toRadians(-8), 0, 0) // Back leg bends to accept weight\n .rotate(BoneName.KNEE_L, toRadians(-3), 0, 0) // Front leg lightens\n .done<MartialArtsAnimationBuilder>()\n // Phase 2: Lift step leg (이동단계 - 들어올리기)\n .at(0.15, \"ease-out\")\n .rotate(BoneName.HIP_L, toRadians(-30), 0, 0) // Knee lifts\n .rotate(BoneName.KNEE_L, toRadians(-40), 0, 0) // Shin forward\n .position(BoneName.PELVIS, 0.05, -0.02, 0) // Drop slightly for power\n .rotate(BoneName.KNEE_R, toRadians(-10), 0, 0) // Back leg bears full weight\n .done<MartialArtsAnimationBuilder>()\n // Phase 3: Extend forward (이동단계 - 앞으로)\n .at(0.25, \"linear\")\n .rotate(BoneName.HIP_L, toRadians(-15), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-10), 0, 0)\n .rotate(BoneName.FOOT_L, toRadians(25), 0, 0) // Toe up, heel ready\n .position(BoneName.PELVIS, 0.03, -0.025, 0.15) // Forward, slightly lower\n .done<MartialArtsAnimationBuilder>()\n // Phase 4: Heel strike (착지단계 - 뒤꿈치 착지)\n .at(0.35, \"linear\")\n .rotate(BoneName.HIP_L, toRadians(-10), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-8), 0, 0)\n .rotate(BoneName.FOOT_L, toRadians(20), 0, 0) // Heel down, toe still up - 디딤발 (Didimbal)\n .position(BoneName.PELVIS, 0, -0.03, 0.3) // Forward and lower on impact\n .rotate(BoneName.KNEE_R, toRadians(-6), 0, 0) // Back leg still supporting\n .done<MartialArtsAnimationBuilder>()\n // Phase 5: Weight transfer begins (체중이동 시작)\n .at(0.45, \"ease-in\")\n .position(BoneName.PELVIS, -0.03, -0.02, 0.35) // Hip shifts toward front leg - 체중이동 (Chejung Idong)\n .rotate(BoneName.KNEE_L, toRadians(-12), 0, 0) // Front leg accepts weight\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0) // Back leg relaxes\n .rotate(BoneName.FOOT_L, toRadians(5), 0, 0) // Foot rolling to flat\n .done<MartialArtsAnimationBuilder>()\n // Phase 6: Complete transfer and stabilization (안정단계)\n .at(0.6, \"ease-in\")\n .position(BoneName.PELVIS, -0.05, 0, 0.4) // Center over front leg\n .rotate(BoneName.KNEE_L, toRadians(-10), 0, 0) // Front leg stable\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0) // Back leg light\n .rotate(BoneName.FOOT_L, toRadians(-5), 0, 0) // Foot completely flat, slight pressure on ball\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3) // Guard maintained throughout\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Backward Step - 후진스텝 with Korean Martial Arts Weight Transfer\n *\n * Retreating step from opponent with authentic Korean martial arts footwork.\n * Implements proper rear weight transfer and defensive positioning.\n *\n * Weight Transfer Mechanics (후퇴 체중이동):\n * - Phase 1 (0-0.15s): Weight shift to front foot, back leg prepares\n * - Phase 2 (0.15-0.35s): Back foot lifts and extends backward\n * - Phase 3 (0.35-0.45s): Ball of foot touches down, weight begins transfer\n * - Phase 4 (0.45-0.6s): Complete weight transfer, maintain guard\n *\n * Korean Martial Arts Principles:\n * - Backward steps land on ball of foot first (unlike forward heel-first)\n * - Maintain forward-facing guard throughout retreat\n * - Center of mass moves smoothly backward\n * - Front leg remains ready to kick or defend\n *\n * @korean 후진스텝애니메이션_체중이동\n */\nexport const MOVEMENT_BACKWARD_STEP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_backward_step\", \"후진스텝\")\n .asMovement(0.6)\n .at(0, \"linear\")\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.03, \"ease-out\")\n .position(BoneName.PELVIS, -0.05, 0, 0) // Weight shifts to front leg\n .rotate(BoneName.KNEE_L, toRadians(-8), 0, 0) // Front leg accepts weight\n .rotate(BoneName.KNEE_R, toRadians(-3), 0, 0) // Back leg lightens\n .done<MartialArtsAnimationBuilder>()\n .at(0.15, \"ease-out\")\n .rotate(BoneName.HIP_R, toRadians(20), 0, 0) // Hip extends back\n .rotate(BoneName.KNEE_R, toRadians(-25), 0, 0) // Knee lifts slightly\n .position(BoneName.PELVIS, -0.05, -0.015, 0)\n .rotate(BoneName.KNEE_L, toRadians(-10), 0, 0) // Front leg stable\n .done<MartialArtsAnimationBuilder>()\n .at(0.25, \"linear\")\n .rotate(BoneName.HIP_R, toRadians(12), 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-8), 0, 0)\n .rotate(BoneName.FOOT_R, toRadians(-15), 0, 0) // Ball of foot ready to land\n .position(BoneName.PELVIS, -0.03, -0.02, -0.15) // Backward motion\n .done<MartialArtsAnimationBuilder>()\n .at(0.35, \"linear\")\n .rotate(BoneName.HIP_R, toRadians(8), 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-6), 0, 0)\n .rotate(BoneName.FOOT_R, toRadians(-12), 0, 0) // Ball of foot contacts ground\n .position(BoneName.PELVIS, 0, -0.025, -0.3)\n .rotate(BoneName.KNEE_L, toRadians(-8), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.45, \"ease-in\")\n .position(BoneName.PELVIS, 0.03, -0.015, -0.35) // Weight transfers to back leg\n .rotate(BoneName.KNEE_R, toRadians(-10), 0, 0) // Back leg accepts weight\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0) // Front leg lightens\n .rotate(BoneName.FOOT_R, toRadians(-5), 0, 0) // Heel settles down\n .done<MartialArtsAnimationBuilder>()\n .at(0.6, \"ease-in\")\n .position(BoneName.PELVIS, 0.05, 0, -0.4) // Stable rear stance\n .rotate(BoneName.KNEE_R, toRadians(-8), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .rotate(BoneName.FOOT_R, 0, 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3) // Guard maintained\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Left Sidestep - 왼쪽측면스텝 with Korean Martial Arts Weight Transfer\n *\n * Lateral movement left with authentic Korean martial arts footwork.\n * Creates angle advantage while maintaining forward guard.\n *\n * Weight Transfer Mechanics (측면 체중이동):\n * - Phase 1: Weight shifts to right leg\n * - Phase 2: Left foot slides lateral\n * - Phase 3: Weight transfers smoothly to left\n * - Phase 4: Right foot follows, stance width maintained\n *\n * Korean Martial Arts Principles:\n * - Guard faces forward throughout (원형보 - Circular footwork)\n * - Pelvis rotates slightly to engage hip\n * - Spine counter-rotates to maintain guard orientation\n * - Smooth weight distribution prevents telegraphing\n *\n * @korean 왼쪽측면스텝애니메이션_체중이동\n */\nexport const MOVEMENT_SIDESTEP_LEFT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_sidestep_left\", \"왼쪽측면스텝\")\n .asMovement(0.5)\n .at(0, \"linear\")\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.08, \"ease-out\")\n .position(BoneName.PELVIS, 0.04, 0, 0) // Weight shifts to right leg\n .rotate(BoneName.PELVIS, 0, 0, toRadians(3)) // Slight tilt right\n .rotate(BoneName.KNEE_R, toRadians(-10), 0, 0) // Right leg accepts weight\n .rotate(BoneName.KNEE_L, toRadians(-3), 0, 0) // Left leg lightens\n .done<MartialArtsAnimationBuilder>()\n .at(0.18, \"linear\")\n .position(BoneName.PELVIS, 0.02, -0.01, 0) // Slight drop during slide\n .rotate(BoneName.PELVIS, 0, toRadians(5), toRadians(5)) // Hip engages for lateral movement\n .rotate(BoneName.SPINE_LOWER, 0, toRadians(-3), 0) // Counter-rotate to maintain guard\n .rotate(BoneName.KNEE_R, toRadians(-12), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.3, \"ease-in\")\n .position(BoneName.PELVIS, -0.15, 0, 0) // Lateral 15cm\n .rotate(BoneName.PELVIS, 0, toRadians(3), 0)\n .rotate(BoneName.SPINE_LOWER, 0, toRadians(-2), 0)\n .rotate(BoneName.KNEE_L, toRadians(-10), 0, 0) // Left leg accepts weight\n .rotate(BoneName.KNEE_R, toRadians(-6), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.5, \"ease-in\")\n .position(BoneName.PELVIS, -0.3, 0, 0) // Full 30cm lateral\n .rotate(BoneName.PELVIS, 0, 0, 0) // Return to neutral\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-8), 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-8), 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3) // Guard maintained forward\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Right Sidestep - 오른쪽측면스텝 with Korean Martial Arts Weight Transfer\n *\n * Lateral movement right with authentic Korean martial arts footwork.\n * Mirror of left sidestep.\n *\n * @korean 오른쪽측면스텝애니메이션_체중이동\n */\nexport const MOVEMENT_SIDESTEP_RIGHT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_sidestep_right\", \"오른쪽측면스텝\")\n .asMovement(0.5)\n .at(0, \"linear\")\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-5), 0, 0)\n .position(BoneName.PELVIS, 0, 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.08, \"ease-out\")\n .position(BoneName.PELVIS, -0.04, 0, 0) // Weight shifts to left leg\n .rotate(BoneName.PELVIS, 0, 0, toRadians(-3))\n .rotate(BoneName.KNEE_L, toRadians(-10), 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-3), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.18, \"linear\")\n .position(BoneName.PELVIS, -0.02, -0.01, 0) // Right foot slides lateral\n .rotate(BoneName.PELVIS, 0, toRadians(-5), toRadians(-5))\n .rotate(BoneName.SPINE_LOWER, 0, toRadians(3), 0)\n .rotate(BoneName.KNEE_L, toRadians(-12), 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-5), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.3, \"ease-in\")\n .position(BoneName.PELVIS, 0.15, 0, 0) // Weight begins transfer to right\n .rotate(BoneName.PELVIS, 0, toRadians(-3), 0)\n .rotate(BoneName.SPINE_LOWER, 0, toRadians(2), 0)\n .rotate(BoneName.KNEE_R, toRadians(-10), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-6), 0, 0)\n .done<MartialArtsAnimationBuilder>()\n .at(0.5, \"ease-in\")\n .position(BoneName.PELVIS, 0.3, 0, 0) // Stable lateral stance\n .rotate(BoneName.PELVIS, 0, 0, 0)\n .rotate(BoneName.SPINE_LOWER, 0, 0, 0)\n .rotate(BoneName.KNEE_R, toRadians(-8), 0, 0)\n .rotate(BoneName.KNEE_L, toRadians(-8), 0, 0)\n .rotate(BoneName.SHOULDER_L, -0.6, 0.4, 0.3) // Guard maintained\n .rotate(BoneName.ELBOW_L, 0, 0, -1.6)\n .rotate(BoneName.SHOULDER_R, -0.6, -0.4, -0.3)\n .rotate(BoneName.ELBOW_R, 0, 0, 1.6)\n .done<MartialArtsAnimationBuilder>()\n .build();\n\n/**\n * Step Drag - 스텝드래그\n *\n * Lead foot step with rear drag.\n * Maintains stance while moving.\n *\n * @korean 스텝드래그애니메이션\n */\nexport const MOVEMENT_STEP_DRAG_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_step_drag\", \"스텝드래그\")\n .asMovement(0.35)\n .step(0.12)\n .step(0.1) // Drag\n .recover(0.13)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// PIVOTS AND TURNS (피봇과 회전)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Left Pivot - 왼쪽피봇\n *\n * Pivot on lead foot to the left.\n * 45 degree angle change.\n *\n * @korean 왼쪽피봇애니메이션\n */\nexport const MOVEMENT_PIVOT_LEFT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_pivot_left\", \"왼쪽피봇\")\n .asMovement(0.28)\n .rotate(0.14)\n .recover(0.14)\n .build();\n\n/**\n * Right Pivot - 오른쪽피봇\n *\n * Pivot on lead foot to the right.\n * 45 degree angle change.\n *\n * @korean 오른쪽피봇애니메이션\n */\nexport const MOVEMENT_PIVOT_RIGHT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_pivot_right\", \"오른쪽피봇\")\n .asMovement(0.28)\n .rotate(0.14)\n .recover(0.14)\n .build();\n\n/**\n * Full Spin - 전체회전\n *\n * Complete 360 rotation.\n * For spinning attack setups.\n *\n * @korean 전체회전애니메이션\n */\nexport const MOVEMENT_FULL_SPIN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_full_spin\", \"전체회전\")\n .asMovement(0.4)\n .spin(0.25)\n .recover(0.15)\n .build();\n\n/**\n * Quarter Turn - 사분회전\n *\n * 90 degree turn.\n * Quick repositioning.\n *\n * @korean 사분회전애니메이션\n */\nexport const MOVEMENT_QUARTER_TURN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_quarter_turn\", \"사분회전\")\n .asMovement(0.25)\n .rotate(0.12)\n .recover(0.13)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// BOUNCING FOOTWORK (바운싱 풋워크)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Bounce Step - 바운스스텝\n *\n * Light bouncing movement.\n * Keeps fighter mobile.\n *\n * @korean 바운스스텝애니메이션\n */\nexport const MOVEMENT_BOUNCE_STEP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_bounce_step\", \"바운스스텝\")\n .asMovement(0.25)\n .step(0.08)\n .step(0.08)\n .recover(0.09)\n .build();\n\n/**\n * Switch Step - 스위치스텝\n *\n * Quick stance switch.\n * Changes lead foot.\n *\n * @korean 스위치스텝애니메이션\n */\nexport const MOVEMENT_SWITCH_STEP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_switch_step\", \"스위치스텝\")\n .asMovement(0.22)\n .jump(0.08)\n .step(0.08)\n .recover(0.06)\n .build();\n\n/**\n * Shuffle - 셔플\n *\n * Quick shuffle step.\n * Rapid forward movement.\n *\n * @korean 셔플애니메이션\n */\nexport const MOVEMENT_SHUFFLE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_shuffle\", \"셔플\")\n .asMovement(0.28)\n .step(0.08)\n .step(0.08)\n .step(0.06)\n .recover(0.06)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EVASIVE FOOTWORK (회피 풋워크)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Back Step - 백스텝\n *\n * Quick retreat step.\n * Creates distance rapidly.\n *\n * @korean 백스텝애니메이션\n */\nexport const MOVEMENT_BACK_STEP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_back_step\", \"백스텝\")\n .asMovement(0.25)\n .step(0.12)\n .recover(0.13)\n .build();\n\n/**\n * Circle Left - 서클왼쪽\n *\n * Circling movement to the left.\n * Maintains distance while repositioning.\n *\n * @korean 서클왼쪽애니메이션\n */\nexport const MOVEMENT_CIRCLE_LEFT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_circle_left\", \"서클왼쪽\")\n .asMovement(0.4)\n .shift(0.12)\n .step(0.12)\n .recover(0.16)\n .build();\n\n/**\n * Circle Right - 서클오른쪽\n *\n * Circling movement to the right.\n * Maintains distance while repositioning.\n *\n * @korean 서클오른쪽애니메이션\n */\nexport const MOVEMENT_CIRCLE_RIGHT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_circle_right\", \"서클오른쪽\")\n .asMovement(0.4)\n .shift(0.12)\n .step(0.12)\n .recover(0.16)\n .build();\n\n/**\n * Angle Off - 앵글오프\n *\n * Step at diagonal angle.\n * Creates superior position.\n *\n * @korean 앵글오프애니메이션\n */\nexport const MOVEMENT_ANGLE_OFF_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_angle_off\", \"앵글오프\")\n .asMovement(0.32)\n .shift(0.1)\n .step(0.1)\n .recover(0.12)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// STANCE CHANGES (스탠스 변경)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Orthodox to Southpaw - 오소독스투사우스포\n *\n * Stance switch orthodox to southpaw.\n * Changes fighting orientation.\n *\n * @korean 오소독스투사우스포애니메이션\n */\nexport const MOVEMENT_ORTHODOX_TO_SOUTHPAW_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"movement_orthodox_to_southpaw\",\n \"오소독스투사우스포\"\n )\n .asMovement(0.35)\n .jump(0.1)\n .rotate(0.12)\n .recover(0.13)\n .build();\n\n/**\n * Southpaw to Orthodox - 사우스포투오소독스\n *\n * Stance switch southpaw to orthodox.\n * Changes fighting orientation.\n *\n * @korean 사우스포투오소독스애니메이션\n */\nexport const MOVEMENT_SOUTHPAW_TO_ORTHODOX_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\n \"movement_southpaw_to_orthodox\",\n \"사우스포투오소독스\"\n )\n .asMovement(0.35)\n .jump(0.1)\n .rotate(0.12)\n .recover(0.13)\n .build();\n\n/**\n * Drop Level - 드롭레벨\n *\n * Lower fighting stance.\n * For takedown or level change attacks.\n *\n * @korean 드롭레벨애니메이션\n */\nexport const MOVEMENT_DROP_LEVEL_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_drop_level\", \"드롭레벨\")\n .asMovement(0.3)\n .duck(0.15)\n .recover(0.15)\n .build();\n\n/**\n * Rise Up - 라이즈업\n *\n * Return to normal fighting stance.\n * Recovery from level change.\n *\n * @korean 라이즈업애니메이션\n */\nexport const MOVEMENT_RISE_UP_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_rise_up\", \"라이즈업\")\n .asMovement(0.28)\n .lean(0.1) // Rise\n .recover(0.18)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// JUMPING MOVEMENTS (점프 이동)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Jump Back - 점프백\n *\n * Jumping retreat.\n * Maximum distance creation.\n *\n * @korean 점프백애니메이션\n */\nexport const MOVEMENT_JUMP_BACK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_jump_back\", \"점프백\")\n .asMovement(0.45)\n .jump(0.2)\n .recover(0.25)\n .build();\n\n/**\n * Jump In - 점프인\n *\n * Jumping advance.\n * Closes distance rapidly.\n *\n * @korean 점프인애니메이션\n */\nexport const MOVEMENT_JUMP_IN_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_jump_in\", \"점프인\")\n .asMovement(0.45)\n .jump(0.2)\n .recover(0.25)\n .build();\n\n/**\n * Jump Aside - 점프사이드\n *\n * Jumping sideways.\n * Lateral evasion.\n *\n * @korean 점프사이드애니메이션\n */\nexport const MOVEMENT_JUMP_ASIDE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_jump_aside\", \"점프사이드\")\n .asMovement(0.42)\n .jump(0.18)\n .shift(0.1)\n .recover(0.14)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// DODGES (회피)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Duck - 덕\n *\n * Ducking under attack.\n * Low evasion.\n *\n * @korean 덕애니메이션\n */\nexport const MOVEMENT_DUCK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_duck\", \"덕\")\n .asMovement(0.3)\n .duck(0.15)\n .recover(0.15)\n .build();\n\n/**\n * Lean Back - 린백\n *\n * Leaning away from attack.\n * Upper body evasion.\n *\n * @korean 린백애니메이션\n */\nexport const MOVEMENT_LEAN_BACK_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_lean_back\", \"린백\")\n .asMovement(0.28)\n .lean(0.14)\n .recover(0.14)\n .build();\n\n/**\n * Sway Left - 스웨이왼쪽\n *\n * Body sway to the left.\n * Subtle evasion.\n *\n * @korean 스웨이왼쪽애니메이션\n */\nexport const MOVEMENT_SWAY_LEFT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_sway_left\", \"스웨이왼쪽\")\n .asMovement(0.25)\n .bob(0.12)\n .recover(0.13)\n .build();\n\n/**\n * Sway Right - 스웨이오른쪽\n *\n * Body sway to the right.\n * Subtle evasion.\n *\n * @korean 스웨이오른쪽애니메이션\n */\nexport const MOVEMENT_SWAY_RIGHT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_sway_right\", \"스웨이오른쪽\")\n .asMovement(0.25)\n .bob(0.12)\n .recover(0.13)\n .build();\n\n/**\n * Bob and Weave - 밥앤위브\n *\n * U-shaped head movement.\n * Classic boxing evasion.\n *\n * @korean 밥앤위브애니메이션\n */\nexport const MOVEMENT_BOB_WEAVE_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_bob_weave\", \"밥앤위브\")\n .asMovement(0.4)\n .bob(0.12)\n .weave(0.13)\n .recover(0.15)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// FEINTS (페인트)\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Jab Feint - 잽페인트\n *\n * Fake jab movement.\n * Draws reaction.\n *\n * @korean 잽페인트애니메이션\n */\nexport const MOVEMENT_JAB_FEINT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_jab_feint\", \"잽페인트\")\n .asMovement(0.2)\n .punchWindup(0.08)\n .recover(0.12)\n .build();\n\n/**\n * Level Change Feint - 레벨체인지페인트\n *\n * Fake level drop.\n * Draws takedown defense.\n *\n * @korean 레벨체인지페인트애니메이션\n */\nexport const MOVEMENT_LEVEL_FEINT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_level_feint\", \"레벨체인지페인트\")\n .asMovement(0.25)\n .duck(0.1)\n .recover(0.15)\n .build();\n\n/**\n * Kick Feint - 킥페인트\n *\n * Fake kick chamber.\n * Draws leg check.\n *\n * @korean 킥페인트애니메이션\n */\nexport const MOVEMENT_KICK_FEINT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_kick_feint\", \"킥페인트\")\n .asMovement(0.25)\n .chamber(0.1)\n .recover(0.15)\n .build();\n\n/**\n * Step Feint - 스텝페인트\n *\n * Fake step forward.\n * Draws counter.\n *\n * @korean 스텝페인트애니메이션\n */\nexport const MOVEMENT_STEP_FEINT_ANIMATION: SkeletalAnimation =\n MartialArtsAnimationBuilder.create(\"movement_step_feint\", \"스텝페인트\")\n .asMovement(0.22)\n .step(0.08)\n .recover(0.14)\n .build();\n\n// ═══════════════════════════════════════════════════════════════════════════\n// EXPORT MOVEMENT ANIMATION MAP\n// ═══════════════════════════════════════════════════════════════════════════\n\n/**\n * Map of all movement animations for easy access\n * 이동 애니메이션 맵\n */\nexport const MOVEMENT_ANIMATIONS: ReadonlyMap<string, SkeletalAnimation> =\n new Map([\n // Basic Footwork\n [\"movement_forward_step\", MOVEMENT_FORWARD_STEP_ANIMATION],\n [\"movement_backward_step\", MOVEMENT_BACKWARD_STEP_ANIMATION],\n [\"movement_sidestep_left\", MOVEMENT_SIDESTEP_LEFT_ANIMATION],\n [\"movement_sidestep_right\", MOVEMENT_SIDESTEP_RIGHT_ANIMATION],\n [\"movement_step_drag\", MOVEMENT_STEP_DRAG_ANIMATION],\n\n // Pivots and Turns\n [\"movement_pivot_left\", MOVEMENT_PIVOT_LEFT_ANIMATION],\n [\"movement_pivot_right\", MOVEMENT_PIVOT_RIGHT_ANIMATION],\n [\"movement_full_spin\", MOVEMENT_FULL_SPIN_ANIMATION],\n [\"movement_quarter_turn\", MOVEMENT_QUARTER_TURN_ANIMATION],\n\n // Bouncing Footwork\n [\"movement_bounce_step\", MOVEMENT_BOUNCE_STEP_ANIMATION],\n [\"movement_switch_step\", MOVEMENT_SWITCH_STEP_ANIMATION],\n [\"movement_shuffle\", MOVEMENT_SHUFFLE_ANIMATION],\n\n // Evasive Footwork\n [\"movement_back_step\", MOVEMENT_BACK_STEP_ANIMATION],\n [\"movement_circle_left\", MOVEMENT_CIRCLE_LEFT_ANIMATION],\n [\"movement_circle_right\", MOVEMENT_CIRCLE_RIGHT_ANIMATION],\n [\"movement_angle_off\", MOVEMENT_ANGLE_OFF_ANIMATION],\n\n // Stance Changes\n [\"movement_orthodox_to_southpaw\", MOVEMENT_ORTHODOX_TO_SOUTHPAW_ANIMATION],\n [\"movement_southpaw_to_orthodox\", MOVEMENT_SOUTHPAW_TO_ORTHODOX_ANIMATION],\n [\"movement_drop_level\", MOVEMENT_DROP_LEVEL_ANIMATION],\n [\"movement_rise_up\", MOVEMENT_RISE_UP_ANIMATION],\n\n // Jumping\n [\"movement_jump_back\", MOVEMENT_JUMP_BACK_ANIMATION],\n [\"movement_jump_in\", MOVEMENT_JUMP_IN_ANIMATION],\n [\"movement_jump_aside\", MOVEMENT_JUMP_ASIDE_ANIMATION],\n\n // Dodges\n [\"movement_duck\", MOVEMENT_DUCK_ANIMATION],\n [\"movement_lean_back\", MOVEMENT_LEAN_BACK_ANIMATION],\n [\"movement_sway_left\", MOVEMENT_SWAY_LEFT_ANIMATION],\n [\"movement_sway_right\", MOVEMENT_SWAY_RIGHT_ANIMATION],\n [\"movement_bob_weave\", MOVEMENT_BOB_WEAVE_ANIMATION],\n\n // Feints\n [\"movement_jab_feint\", MOVEMENT_JAB_FEINT_ANIMATION],\n [\"movement_level_feint\", MOVEMENT_LEVEL_FEINT_ANIMATION],\n [\"movement_kick_feint\", MOVEMENT_KICK_FEINT_ANIMATION],\n [\"movement_step_feint\", MOVEMENT_STEP_FEINT_ANIMATION],\n ]);\n"],"mappings":"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"}
|
|
@@ -80,7 +80,7 @@ import type { SkeletalAnimation } from "../../../types/skeletal";
|
|
|
80
80
|
*/
|
|
81
81
|
export declare const JAB_ANIMATION: SkeletalAnimation;
|
|
82
82
|
/**
|
|
83
|
-
* Cross - 크로스 (정권지르기 -
|
|
83
|
+
* Cross - 크로스 (정권지르기 - Jeongkwon Jireugi)
|
|
84
84
|
*
|
|
85
85
|
* Powerful straight punch with rear hand using full Korean martial arts biomechanics.
|
|
86
86
|
* The quintessential power punch - generates maximum force through complete body chain.
|
|
@@ -63,7 +63,7 @@ import { MartialArtsAnimationBuilder, TECHNIQUE_TIMING } from "../builders/Marti
|
|
|
63
63
|
*/
|
|
64
64
|
var JAB_ANIMATION = MartialArtsAnimationBuilder.create("jab", "잽").asAttack(TECHNIQUE_TIMING.FAST.total).punchChamber(TECHNIQUE_TIMING.FAST.chamber, "left").withKoreanMiddleGuard("right").punchExtend(TECHNIQUE_TIMING.FAST.extend, "left").withKoreanMiddleGuard("right").punchPeak(TECHNIQUE_TIMING.FAST.peak, "left").withKoreanMiddleGuard("right").recover(TECHNIQUE_TIMING.FAST.retract + TECHNIQUE_TIMING.FAST.recover).withKoreanMiddleGuard().build();
|
|
65
65
|
/**
|
|
66
|
-
* Cross - 크로스 (정권지르기 -
|
|
66
|
+
* Cross - 크로스 (정권지르기 - Jeongkwon Jireugi)
|
|
67
67
|
*
|
|
68
68
|
* Powerful straight punch with rear hand using full Korean martial arts biomechanics.
|
|
69
69
|
* The quintessential power punch - generates maximum force through complete body chain.
|