diff options
author | Matt Strapp <matt@mattstrapp.net> | 2021-11-01 14:39:34 -0500 |
---|---|---|
committer | Matt Strapp <matt@mattstrapp.net> | 2021-11-01 14:39:34 -0500 |
commit | 36b8bde22e15e7a8608bd8920b4d6d8edf78af18 (patch) | |
tree | 1c022ce8d1854c6120ed492eb0bcad2e016e0f1f /dev/a4-dance/dance_app.h | |
parent | do a3 (diff) | |
parent | Update a4_dance.md (diff) | |
download | csci4611-36b8bde22e15e7a8608bd8920b4d6d8edf78af18.tar csci4611-36b8bde22e15e7a8608bd8920b4d6d8edf78af18.tar.gz csci4611-36b8bde22e15e7a8608bd8920b4d6d8edf78af18.tar.bz2 csci4611-36b8bde22e15e7a8608bd8920b4d6d8edf78af18.tar.lz csci4611-36b8bde22e15e7a8608bd8920b4d6d8edf78af18.tar.xz csci4611-36b8bde22e15e7a8608bd8920b4d6d8edf78af18.tar.zst csci4611-36b8bde22e15e7a8608bd8920b4d6d8edf78af18.zip |
Merge branch 'support-code' of https://github.umn.edu/umn-csci-4611-f21/shared-upstream
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 |