Files
Owen/docs/animation_AnimationConstants.js.html
Kaj Kowalski f4e3d318ee
Some checks failed
CI/CD Pipeline / Test & Lint (16.x) (push) Has been cancelled
CI/CD Pipeline / Test & Lint (18.x) (push) Has been cancelled
CI/CD Pipeline / Test & Lint (20.x) (push) Has been cancelled
CI/CD Pipeline / Security Audit (push) Has been cancelled
CI/CD Pipeline / Release (push) Has been cancelled
Add state handler implementations and documentation
- Implemented StateHandler class with methods for entering, exiting, and updating states.
- Created TypeStateHandler for handling typing state with appropriate animations and transitions.
- Developed WaitStateHandler for managing idle state with quirk animations.
- Added JSDoc documentation for all new classes and methods.
- Included CSS styles for documentation formatting and syntax highlighting.
2025-05-24 12:31:01 +02:00

399 lines
13 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<title>JSDoc: Source: animation/AnimationConstants.js</title>
<script src="scripts/prettify/prettify.js"></script>
<script src="scripts/prettify/lang-css.js"></script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link
type="text/css"
rel="stylesheet"
href="styles/prettify-tomorrow.css"
/>
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css" />
</head>
<body>
<div id="main">
<h1 class="page-title">Source: animation/AnimationConstants.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>/**
* @fileoverview Animation constants with multi-scheme support for Owen Animation System
* @module animation/AnimationConstants
*/
import { AnimationNameMapper } from './AnimationNameMapper.js'
// Create a singleton instance of the name mapper
const nameMapper = new AnimationNameMapper()
/**
* Legacy animation names (backward compatibility)
* @constant
*/
export const LegacyAnimations = {
// Wait state animations
WAIT_IDLE_LOOP: 'wait_idle_L',
WAIT_PICK_NOSE_QUIRK: 'wait_pickNose_Q',
WAIT_STRETCH_QUIRK: 'wait_stretch_Q',
WAIT_YAWN_QUIRK: 'wait_yawn_Q',
// React state animations - neutral
REACT_IDLE_LOOP: 'react_idle_L',
REACT_ACKNOWLEDGE_TRANSITION: 'react_acknowledge_T',
REACT_NOD_TRANSITION: 'react_nod_T',
REACT_LISTENING_LOOP: 'react_listening_L',
// React state animations - angry
REACT_ANGRY_IDLE_LOOP: 'react_angry_L',
REACT_ANGRY_FROWN_TRANSITION: 'react_an2frown_T',
REACT_ANGRY_GRUMBLE_QUIRK: 'react_an2grumble_Q',
REACT_ANGRY_TO_TYPE_TRANSITION: 'react_an2type_T',
// React state animations - happy
REACT_HAPPY_IDLE_LOOP: 'react_happy_L',
REACT_HAPPY_SMILE_TRANSITION: 'react_hp2smile_T',
REACT_HAPPY_BOUNCE_QUIRK: 'react_hp2bounce_Q',
REACT_HAPPY_TO_TYPE_TRANSITION: 'react_hp2type_T',
// React state animations - sad
REACT_SAD_IDLE_LOOP: 'react_sad_L',
REACT_SAD_SIGH_TRANSITION: 'react_sd2sigh_T',
REACT_SAD_SLUMP_QUIRK: 'react_sd2slump_Q',
REACT_SAD_TO_TYPE_TRANSITION: 'react_sd2type_T',
// React state animations - shocked
REACT_SHOCKED_IDLE_LOOP: 'react_shocked_L',
REACT_SHOCKED_GASP_TRANSITION: 'react_sh2gasp_T',
REACT_SHOCKED_JUMP_QUIRK: 'react_sh2jump_Q',
REACT_SHOCKED_TO_TYPE_TRANSITION: 'react_sh2type_T',
// Type state animations
TYPE_IDLE_LOOP: 'type_idle_L',
TYPE_FAST_LOOP: 'type_fast_L',
TYPE_SLOW_LOOP: 'type_slow_L',
TYPE_THINKING_LOOP: 'type_thinking_L',
TYPE_TO_WAIT_TRANSITION: 'type2wait_T',
// Sleep state animations
SLEEP_LIGHT_LOOP: 'sleep_light_L',
SLEEP_DEEP_LOOP: 'sleep_deep_L',
SLEEP_DREAM_QUIRK: 'sleep_dream_Q',
SLEEP_WAKE_UP_TRANSITION: 'sleep2wake_T'
}
/**
* Artist-friendly animation names (Blender workflow)
* @constant
*/
export const ArtistAnimations = {
// Wait state animations
WAIT_IDLE: 'Owen_WaitIdle',
WAIT_PICK_NOSE: 'Owen_PickNose',
WAIT_STRETCH: 'Owen_Stretch',
WAIT_YAWN: 'Owen_Yawn',
// React state animations - neutral
REACT_IDLE: 'Owen_ReactIdle',
REACT_ACKNOWLEDGE: 'Owen_ReactAcknowledge',
REACT_NOD: 'Owen_ReactNod',
REACT_LISTENING: 'Owen_ReactListening',
// React state animations - angry
REACT_ANGRY_IDLE: 'Owen_ReactAngryIdle',
REACT_ANGRY_FROWN: 'Owen_ReactAngryFrown',
REACT_ANGRY_GRUMBLE: 'Owen_ReactAngryGrumble',
REACT_ANGRY_TO_TYPE: 'Owen_ReactAngryToType',
// React state animations - happy
REACT_HAPPY_IDLE: 'Owen_ReactHappyIdle',
REACT_HAPPY_SMILE: 'Owen_ReactHappySmile',
REACT_HAPPY_BOUNCE: 'Owen_ReactHappyBounce',
REACT_HAPPY_TO_TYPE: 'Owen_ReactHappyToType',
// React state animations - sad
REACT_SAD_IDLE: 'Owen_ReactSadIdle',
REACT_SAD_SIGH: 'Owen_ReactSadSigh',
REACT_SAD_SLUMP: 'Owen_ReactSadSlump',
REACT_SAD_TO_TYPE: 'Owen_ReactSadToType',
// React state animations - shocked
REACT_SHOCKED_IDLE: 'Owen_ReactShockedIdle',
REACT_SHOCKED_GASP: 'Owen_ReactShockedGasp',
REACT_SHOCKED_JUMP: 'Owen_ReactShockedJump',
REACT_SHOCKED_TO_TYPE: 'Owen_ReactShockedToType',
// Type state animations
TYPE_IDLE: 'Owen_TypeIdle',
TYPE_FAST: 'Owen_TypeFast',
TYPE_SLOW: 'Owen_TypeSlow',
TYPE_THINKING: 'Owen_TypeThinking',
TYPE_TO_WAIT: 'Owen_TypeToWait',
// Sleep state animations
SLEEP_LIGHT: 'Owen_SleepLight',
SLEEP_DEEP: 'Owen_SleepDeep',
SLEEP_DREAM: 'Owen_SleepDream',
SLEEP_WAKE_UP: 'Owen_SleepWakeUp'
}
/**
* Hierarchical animation names (organized structure)
* @constant
*/
export const HierarchicalAnimations = {
// Wait state animations
WAIT_IDLE: 'owen.state.wait.idle.loop',
WAIT_PICK_NOSE: 'owen.quirk.wait.picknose',
WAIT_STRETCH: 'owen.quirk.wait.stretch',
WAIT_YAWN: 'owen.quirk.wait.yawn',
// React state animations - neutral
REACT_IDLE: 'owen.state.react.idle.loop',
REACT_ACKNOWLEDGE: 'owen.state.react.acknowledge.transition',
REACT_NOD: 'owen.state.react.nod.transition',
REACT_LISTENING: 'owen.state.react.listening.loop',
// React state animations - angry
REACT_ANGRY_IDLE: 'owen.state.react.angry.idle.loop',
REACT_ANGRY_FROWN: 'owen.state.react.angry.frown.transition',
REACT_ANGRY_GRUMBLE: 'owen.quirk.react.angry.grumble',
REACT_ANGRY_TO_TYPE: 'owen.state.react.angry.totype.transition',
// React state animations - happy
REACT_HAPPY_IDLE: 'owen.state.react.happy.idle.loop',
REACT_HAPPY_SMILE: 'owen.state.react.happy.smile.transition',
REACT_HAPPY_BOUNCE: 'owen.quirk.react.happy.bounce',
REACT_HAPPY_TO_TYPE: 'owen.state.react.happy.totype.transition',
// React state animations - sad
REACT_SAD_IDLE: 'owen.state.react.sad.idle.loop',
REACT_SAD_SIGH: 'owen.state.react.sad.sigh.transition',
REACT_SAD_SLUMP: 'owen.quirk.react.sad.slump',
REACT_SAD_TO_TYPE: 'owen.state.react.sad.totype.transition',
// React state animations - shocked
REACT_SHOCKED_IDLE: 'owen.state.react.shocked.idle.loop',
REACT_SHOCKED_GASP: 'owen.state.react.shocked.gasp.transition',
REACT_SHOCKED_JUMP: 'owen.quirk.react.shocked.jump',
REACT_SHOCKED_TO_TYPE: 'owen.state.react.shocked.totype.transition',
// Type state animations
TYPE_IDLE: 'owen.state.type.idle.loop',
TYPE_FAST: 'owen.state.type.fast.loop',
TYPE_SLOW: 'owen.state.type.slow.loop',
TYPE_THINKING: 'owen.state.type.thinking.loop',
TYPE_TO_WAIT: 'owen.state.type.towait.transition',
// Sleep state animations
SLEEP_LIGHT: 'owen.state.sleep.light.loop',
SLEEP_DEEP: 'owen.state.sleep.deep.loop',
SLEEP_DREAM: 'owen.quirk.sleep.dream',
SLEEP_WAKE_UP: 'owen.state.sleep.wakeup.transition'
}
/**
* Semantic animation names (readable camelCase)
* @constant
*/
export const SemanticAnimations = {
// Wait state animations
WAIT_IDLE: 'OwenWaitIdleLoop',
WAIT_PICK_NOSE: 'OwenQuirkPickNose',
WAIT_STRETCH: 'OwenQuirkStretch',
WAIT_YAWN: 'OwenQuirkYawn',
// React state animations - neutral
REACT_IDLE: 'OwenReactIdleLoop',
REACT_ACKNOWLEDGE: 'OwenReactAcknowledgeTransition',
REACT_NOD: 'OwenReactNodTransition',
REACT_LISTENING: 'OwenReactListeningLoop',
// React state animations - angry
REACT_ANGRY_IDLE: 'OwenReactAngryIdleLoop',
REACT_ANGRY_FROWN: 'OwenReactAngryFrownTransition',
REACT_ANGRY_GRUMBLE: 'OwenQuirkAngryGrumble',
REACT_ANGRY_TO_TYPE: 'OwenReactAngryToTypeTransition',
// React state animations - happy
REACT_HAPPY_IDLE: 'OwenReactHappyIdleLoop',
REACT_HAPPY_SMILE: 'OwenReactHappySmileTransition',
REACT_HAPPY_BOUNCE: 'OwenQuirkHappyBounce',
REACT_HAPPY_TO_TYPE: 'OwenReactHappyToTypeTransition',
// React state animations - sad
REACT_SAD_IDLE: 'OwenReactSadIdleLoop',
REACT_SAD_SIGH: 'OwenReactSadSighTransition',
REACT_SAD_SLUMP: 'OwenQuirkSadSlump',
REACT_SAD_TO_TYPE: 'OwenReactSadToTypeTransition',
// React state animations - shocked
REACT_SHOCKED_IDLE: 'OwenReactShockedIdleLoop',
REACT_SHOCKED_GASP: 'OwenReactShockedGaspTransition',
REACT_SHOCKED_JUMP: 'OwenQuirkShockedJump',
REACT_SHOCKED_TO_TYPE: 'OwenReactShockedToTypeTransition',
// Type state animations
TYPE_IDLE: 'OwenTypeIdleLoop',
TYPE_FAST: 'OwenTypeFastLoop',
TYPE_SLOW: 'OwenTypeSlowLoop',
TYPE_THINKING: 'OwenTypeThinkingLoop',
TYPE_TO_WAIT: 'OwenTypeToWaitTransition',
// Sleep state animations
SLEEP_LIGHT: 'OwenSleepLightLoop',
SLEEP_DEEP: 'OwenSleepDeepLoop',
SLEEP_DREAM: 'OwenQuirkSleepDream',
SLEEP_WAKE_UP: 'OwenSleepWakeUpTransition'
}
/**
* Animation naming schemes enumeration
* @constant
*/
export const NamingSchemes = {
LEGACY: 'legacy',
ARTIST: 'artist',
HIERARCHICAL: 'hierarchical',
SEMANTIC: 'semantic'
}
/**
* Convert animation name between different schemes
* @param {string} name - The source animation name
* @param {string} targetScheme - The target naming scheme
* @returns {string} The converted animation name
*/
export function convertAnimationName (name, targetScheme) {
return nameMapper.convert(name, targetScheme)
}
/**
* Get all naming scheme variants for an animation
* @param {string} name - The source animation name
* @returns {Object} Object with all scheme variants
*/
export function getAllAnimationNames (name) {
return nameMapper.getAllNames(name)
}
/**
* Validate an animation name
* @param {string} name - The animation name to validate
* @returns {Object} Validation result
*/
export function validateAnimationName (name) {
return nameMapper.validateAnimationName(name)
}
/**
* Get animations by state and emotion
* @param {string} state - The state name
* @param {string} emotion - The emotion name (optional)
* @param {string} scheme - The naming scheme to return (default: 'semantic')
* @returns {string[]} Array of animation names
*/
export function getAnimationsByStateAndEmotion (state, emotion = '', scheme = 'semantic') {
const animations = nameMapper.getAnimationsByFilter({ state, emotion })
return animations.map(anim => anim[scheme] || anim.semantic)
}
</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2>
<h3>Modules</h3>
<ul>
<li><a href="module-StateHandler.html">StateHandler</a></li>
<li><a href="module-animation.html">animation</a></li>
<li>
<a href="module-animation_AnimationConstants.html"
>animation/AnimationConstants</a
>
</li>
<li>
<a href="module-animation_AnimationNameMapper.html"
>animation/AnimationNameMapper</a
>
</li>
<li><a href="module-constants.html">constants</a></li>
<li><a href="module-core.html">core</a></li>
<li><a href="module-factories.html">factories</a></li>
<li><a href="module-loaders.html">loaders</a></li>
<li><a href="module-owen.html">owen</a></li>
<li><a href="module-states.html">states</a></li>
</ul>
<h3>Classes</h3>
<ul>
<li>
<a href="module-StateHandler.StateHandler.html">StateHandler</a>
</li>
<li><a href="module-animation.AnimationClip.html">AnimationClip</a></li>
<li>
<a href="module-animation.AnimationClipFactory.html"
>AnimationClipFactory</a
>
</li>
<li>
<a
href="module-animation_AnimationNameMapper.AnimationNameMapper.html"
>AnimationNameMapper</a
>
</li>
<li>
<a href="module-core.OwenAnimationContext.html"
>OwenAnimationContext</a
>
</li>
<li>
<a href="module-factories.OwenSystemFactory.html"
>OwenSystemFactory</a
>
</li>
<li>
<a href="module-loaders.AnimationLoader.html">AnimationLoader</a>
</li>
<li>
<a href="module-loaders.GLTFAnimationLoader.html"
>GLTFAnimationLoader</a
>
</li>
<li>
<a href="module-states.ReactStateHandler.html">ReactStateHandler</a>
</li>
<li>
<a href="module-states.SleepStateHandler.html">SleepStateHandler</a>
</li>
<li><a href="module-states.StateFactory.html">StateFactory</a></li>
<li>
<a href="module-states.TypeStateHandler.html">TypeStateHandler</a>
</li>
<li>
<a href="module-states.WaitStateHandler.html">WaitStateHandler</a>
</li>
</ul>
</nav>
<br class="clear" />
<footer>
Documentation generated by
<a href="https://github.com/jsdoc/jsdoc">JSDoc 4.0.4</a> on Sat May 24
2025 12:29:38 GMT+0200 (Midden-Europese zomertijd)
</footer>
<script>
prettyPrint();
</script>
<script src="scripts/linenumber.js"></script>
</body>
</html>