Loading Actors and Animations

The Actor class which is available to Python users is not available to C++ users. If you need such a class you have to create your own class which at least should do the following:

  • load the Actor Model

  • load the animations

  • bind the model and the animations using AnimControl or AnimControlCollection

Required Includes

#include <auto_bind.h>
#include <animControlCollection.h>

Load the Actor Model

NodePath actor = window->load_model(window->get_render(), "panda-model");

Load the Animation

window->load_model(actor, "panda-walk");

Bind the Model and the Animation

// don't use PT or CPT with AnimControlCollection
AnimControlCollection anim_collection;

//bind the animations to the model
auto_bind(actor.node(), anim_collection);

Control the Animations

// the name of an animation is preceded in the .egg file with <Bundle>:
// loop a specific animation
anim_collection.loop("panda_soft", true);

// loop all animations
anim_collection.loop_all(true);

// play an animation once:
anim_collection.play("panda_soft");

// pose
anim_collection.pose("panda_soft", 5);

to display names of loaded animations you could use:

for (int n = 0; n < anim_controls.get_num_anims(); ++n) {
  std::cerr << anim_controls.get_anim_name(n) << std::endl;
}

If you add more animations to some node after calling: auto_bind(...) they will not be controllable until auto_bind(...) is called again with proper arguments.

Note that it is possible to store the animations and the model in the same file.