-
Notifications
You must be signed in to change notification settings - Fork 5
State Machine Listeners
Wyatt Gillette edited this page Jan 12, 2022
·
7 revisions
Global event listeners can be defined for the state machine. These listeners will be invoked any time a state transition occurs and can be utilized for things such as logging or other.
We need to define a listener by extending StateMachineListener:
public class AIControl extends AbstractControl implements StateMachineListener {
@Override
public void stateChanged(AnimatorState from, AnimatorState to) {
System.out.printf("Transitioned from %s to %s%n", from, to);
}
@Override
protected void controlUpdate(float tpf) {
//do something...
}
@Override
protected void controlRender(RenderManager rm, ViewPort vp) {
//do something...
}
}
Spatial enemy = ...;
AnimComposer composer = enemy.getControl(AnimComposer.class);
// Create the controller
AnimatorController animator = new AnimatorController(composer);
enemy.addControl(animator);
AnimatorControllerLayer layer0 = animator.getLayer(AnimComposer.DEFAULT_LAYER);
AnimatorStateMachine sm = layer0.getStateMachine();
AIControl aiControl = new AIControl();
enemy.addControl(aiControl);
sm.addListener(aiControl);