#ifndef MORPHMESH_H #define MORPHMESH_H #include #include #include #include /* Tim Redfern, March 2012 Loads meshes in Oak3D XML format Draws blended morph targets Multiple meshes are loaded as morph targets Coords are absolute --managing movement sequences --cycles can refer to targets by name --high level controller objects can refer to animation sequences by name --this makes it impossible for a re-odering to banjax everything cycles have a start time, and they either loop or act as a transition Working out the morphs is a question of: -working out which cycles are active based on behaviours -adding their morph targets into the current vector of targets behaviours are triggered by things like spotting people or avoiding the wall. These could be parameterised on top of the rest? */ class sequence { //stores a morph sequence: an animation cycle or transition public: sequence(); virtual ~sequence(); }; class morphmesh : public ofMesh { public: morphmesh(); morphmesh(string filename); virtual ~morphmesh(); bool loadMesh(string filename); bool isLoaded(); void draw(); void draw(int target); void draw(const vector& targets, const vector& weights); int getNumTargets(); protected: private: map< string,vector > morphs; bool loaded; }; #endif // MORPHMESH_H