hmi.elckerlyc.animationengine
Class AnimationPlanner

java.lang.Object
  extended by hmi.elckerlyc.AbstractPlanner
      extended by hmi.elckerlyc.animationengine.AnimationPlanner
All Implemented Interfaces:
Planner

public class AnimationPlanner
extends AbstractPlanner

Main use: take BML based behaviors, resolve timepegs, add to player. Uses GestureBinding to map BML behavior classes to, e.g., ProcAnimations

Author:
welberge

Field Summary
private  GestureBinding gestureBinding
           
private  AnimationPlayer player
           
private  SpeechBinding speechBinding
           
 
Constructor Summary
AnimationPlanner(AnimationPlayer p, GestureBinding g, SpeechBinding s)
           
 
Method Summary
 List<SyncAndTimePeg> addBehaviour(BMLBlockPeg bbPeg, Behaviour b, List<TimePegAndConstraint> sacs, PlanUnit planElement)
          Creates a TimedMotionUnit that satisfies sacs and adds it to the motion plan.
 void addExceptionListener(BMLExceptionListener war)
           
 void addVisemesForSpeechUnit(List<TimedMotionUnit> visemeMUs)
           
 void clearAll(double time)
          Removes all behaviors from the plan
 AnimationPlayer getAnimationPlayer()
           
 Set<String> getInvalidBehaviours()
          Checks if the behavior plan is still consistent (e.g. after modifying the timing of some TimePegs).
 Player getPlayer()
          Returns the Player for this planner. useful for, e.g., resetting the player of any planner (see BMLRealizer.reset).
 TimedMotionUnit getSpeechMotionUnit(int visime, BMLBlockPeg bbPeg, String id, String bmlId)
           
 List<Class<? extends Behaviour>> getSupportedBehaviours()
           
 List<Class<? extends Behaviour>> getSupportedDescriptionExtensions()
           
 boolean hasSpeechBinding()
           
 void interruptBehaviour(String behaviourId, String BMLId, double globalTime)
          Interrupts the behavior, sending the appropiate feedback callbacks if the behavior was running, just removes it otherwise.
private  void linkSynchs(TimedMotionUnit tmu, List<TimePegAndConstraint> sacs)
           
 void removeAllExceptionListeners()
           
 void removeBehaviour(String behaviourId, String BMLId)
          Removes behavior with behaviourId and bmlId from the plan Callback behavior is unspecified
 void reset()
          Resets the player, that is: stops running behavior and returns the player to its startup state (default pose etc) This does not clear any behaviours from the plans.
 TimedMotionUnit resolveSynchs(BMLBlockPeg bbPeg, Behaviour b, List<TimePegAndConstraint> sac)
          Resolves TimePegs for behavior b, given some known time pegs and constraints
 void setGestureBinding(GestureBinding g)
           
 void setParameterValue(String behId, String bmlId, String paramId, float value)
           
 void setParameterValue(String behId, String bmlId, String paramId, String value)
           
 void setSpeechBinding(SpeechBinding s)
           
 
Methods inherited from class hmi.elckerlyc.AbstractPlanner
addFeedbackListener, getBehaviours, getEndTime, getFeedbackListeners, interruptBehaviourBlock, removeAllFeedbackListeners, removeFeedbackListener, setBMLBlockState, shutdown
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

player

private AnimationPlayer player

gestureBinding

private GestureBinding gestureBinding

speechBinding

private SpeechBinding speechBinding
Constructor Detail

AnimationPlanner

public AnimationPlanner(AnimationPlayer p,
                        GestureBinding g,
                        SpeechBinding s)
Method Detail

setGestureBinding

public void setGestureBinding(GestureBinding g)

setSpeechBinding

public void setSpeechBinding(SpeechBinding s)

hasSpeechBinding

public boolean hasSpeechBinding()

getSpeechMotionUnit

public TimedMotionUnit getSpeechMotionUnit(int visime,
                                           BMLBlockPeg bbPeg,
                                           String id,
                                           String bmlId)

getPlayer

public Player getPlayer()
Description copied from interface: Planner
Returns the Player for this planner. useful for, e.g., resetting the player of any planner (see BMLRealizer.reset).


getAnimationPlayer

public AnimationPlayer getAnimationPlayer()

addVisemesForSpeechUnit

public void addVisemesForSpeechUnit(List<TimedMotionUnit> visemeMUs)

addBehaviour

public List<SyncAndTimePeg> addBehaviour(BMLBlockPeg bbPeg,
                                         Behaviour b,
                                         List<TimePegAndConstraint> sacs,
                                         PlanUnit planElement)
                                  throws BehaviourPlanningException
Creates a TimedMotionUnit that satisfies sacs and adds it to the motion plan. All registered BMLFeedbackListener are linked to this TimedMotionUnit.

planElement - planElement obtained from resolveSynchs, null to create a new planElement
Returns:
a list of all syncs of the behavior and their linked TimePegs
Throws:
BehaviourPlanningException - if no behavior satisfying sac can be constructed

resolveSynchs

public TimedMotionUnit resolveSynchs(BMLBlockPeg bbPeg,
                                     Behaviour b,
                                     List<TimePegAndConstraint> sac)
                              throws BehaviourPlanningException
Description copied from interface: Planner
Resolves TimePegs for behavior b, given some known time pegs and constraints

b - the behavior
sac - the provided time pegs and constraints, missing constraints are filled out by this method
Returns:
the object to be placed in the plan (a TimedMotionUnit, SpeechUnit, ...)
Throws:
BehaviourPlanningException - if no behavior satisfying sac can be constructed

clearAll

public void clearAll(double time)
Description copied from interface: Planner
Removes all behaviors from the plan


linkSynchs

private void linkSynchs(TimedMotionUnit tmu,
                        List<TimePegAndConstraint> sacs)

removeBehaviour

public void removeBehaviour(String behaviourId,
                            String BMLId)
Description copied from interface: Planner
Removes behavior with behaviourId and bmlId from the plan Callback behavior is unspecified


interruptBehaviour

public void interruptBehaviour(String behaviourId,
                               String BMLId,
                               double globalTime)
Description copied from interface: Planner
Interrupts the behavior, sending the appropiate feedback callbacks if the behavior was running, just removes it otherwise.


getInvalidBehaviours

public Set<String> getInvalidBehaviours()
Description copied from interface: Planner
Checks if the behavior plan is still consistent (e.g. after modifying the timing of some TimePegs). Returns id's of behaviors with invalid timing


addExceptionListener

public void addExceptionListener(BMLExceptionListener war)

removeAllExceptionListeners

public void removeAllExceptionListeners()

getSupportedBehaviours

public List<Class<? extends Behaviour>> getSupportedBehaviours()

getSupportedDescriptionExtensions

public List<Class<? extends Behaviour>> getSupportedDescriptionExtensions()

reset

public void reset()
Description copied from interface: Planner
Resets the player, that is: stops running behavior and returns the player to its startup state (default pose etc) This does not clear any behaviours from the plans.


setParameterValue

public void setParameterValue(String behId,
                              String bmlId,
                              String paramId,
                              float value)

setParameterValue

public void setParameterValue(String behId,
                              String bmlId,
                              String paramId,
                              String value)