Files
Zos/Skills/@be/node_modules/jibo-anim-db/README.md

2.3 KiB

AnimDB

Description

This project provides an interface to an animation database with methods to query animations from that database as well as manipulate them.

How to build / run

  • To initially setup: yarn install
  • To build: gulp debug
  • To test: gulp test

Example usage

Reading and using an AnimDB

import {
  AnimDB,
  AnimDBParser,
  Orientation,
  AnimConfig,
  AnimQuery,
  HasAudio } from 'jibo-anim-db';

// We read an animation database
AnimDBParser.readAnimDB('/some/path/animdb.json')
  .then( animDB => {

    // Now we can for example retrieve animation objects by name
    let anim1 = animDB.getAnimByName('SomeAnimName');

    // And we can then createFromConfig playback objects from those animations
    // which comply with optional requirements
    let playbackPromise = anim1.createFromConfig({
      duration: 10,
      speed: 0.8,
      scale: 1.2,
      orientation: Orientation.LEFT
    });

    // A playback object can then be played which will play either
    // one or two animations on a time line fitting those requirements
    playbackPromise
      .then( playback => playback.play({ jibo }) )
      .catch(console.error.bind(console));

    // We can also query for a set of animations that belong to a
    // certain category and optionally that can be made to have a
    // certain duration
    let res = animDB.query({
      category: 'SomeCatName',
      duration: 35,
      durationError: 10,
      hasAudio: HasAudio.YES
    });

    // All matching animations will be provided in 'matching' array:
    res.matching[0].createFromConfig({ duration: 35 })
      .then( playback => playback.play({ jibo }) )
      .catch(console.error.bind(console));

    // And animations whose durations don't match exactly but are within
    // the error bounds are returned in `nonMatching`
    res.nonMatching[0].createFromConfig({ duration: 35 })
      .then( playback => playback.play({ jibo }) )
      .catch(console.error.bind(console));

  }).catch(console.error);

Creating an AnimDB

// We build and write an animation database
// This path has to point to a directory which contains an 'animations' directory
AnimDBParser.createAndWriteAnimMetaData('/some/path/', 'animdb')
  .then( () => console.log('Done') )
  .catch(console.error.bind(console));