diff options
Diffstat (limited to 'dev/a4-dance/dance_app.h')
-rw-r--r-- | dev/a4-dance/dance_app.h | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/dev/a4-dance/dance_app.h b/dev/a4-dance/dance_app.h new file mode 100644 index 0000000..4851337 --- /dev/null +++ b/dev/a4-dance/dance_app.h @@ -0,0 +1,85 @@ +#ifndef DANCE_APP_H_ +#define DANCE_APP_H_ + +#include <mingfx.h> + +#include "animated_character.h" + +#include <string> +#include <vector> + + +/** DanceApp extends GraphicsApp to implement the dancing ants assignment. */ +class DanceApp : public GraphicsApp { +public: + + DanceApp(); + virtual ~DanceApp(); + + /// The OnMotion*BtnPressed() callbacks are called when the user clicks the + /// corresponding button in the GUI. + void OnMotion1BtnPressed(); + void OnMotion2BtnPressed(); + void OnMotion3BtnPressed(); + void OnMotion4BtnPressed(); + void OnMotion5BtnPressed(); + + /// You can think of playing back mocap data as a form of simulation. This + /// gets called once per frame and passes the elapsed time since the last + /// frame, so this is exactly the right place to advance the mocap playback. + void UpdateSimulation(double dt); + + /// Used to initialize the on-screen GUI elements + void InitNanoGUI(); + + /// Used to initialize opengl-based graphics elements + void InitOpenGL(); + + /// This is the place to draw the actual animated characters based upon their + /// current poses. + void DrawUsingOpenGL(); + + +private: + + // The pair of ants dancing the salsa + AnimatedCharacter salsa_ant_male_; + AnimatedCharacter salsa_ant_female_; + // This transform is applied to both the salsa ants, it just shifts them to + // the right a bit so that the ballet ant can have some space on the dance + // floor too + Matrix4 salsa_ants_transform_; + + // The ballet dancing ant + AnimatedCharacter ballet_ant_; + // Shifts the ballet dancing ant to the left a bit + Matrix4 ballet_ant_transform_; + + // Motion clips loaded from disk for the ballet ant -- one for the base loop + // to use which she is resting and then 5 "special motions" that can be + // applied with the press of a button. + MotionClip ballet_base_loop_; + MotionClip ballet_special1_; + MotionClip ballet_special2_; + MotionClip ballet_special3_; + MotionClip ballet_special4_; + MotionClip ballet_special5_; + + + + // A list of paths to search for data files (images and shaders) + std::vector<std::string> searchPath_; + + // Define the camera + Matrix4 viewMatrix_; + Matrix4 projMatrix_; + + // For drawing the floor, etc. + QuickShapes quick_shapes_; + + // Textures for the background image and floor + Texture2D bg_tex_; + Texture2D floor_tex_; +}; + +#endif |