summaryrefslogtreecommitdiffstats
path: root/dev/a3-earthquake/quake_app.h
diff options
context:
space:
mode:
Diffstat (limited to 'dev/a3-earthquake/quake_app.h')
-rw-r--r--dev/a3-earthquake/quake_app.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/dev/a3-earthquake/quake_app.h b/dev/a3-earthquake/quake_app.h
new file mode 100644
index 0000000..21d7a8d
--- /dev/null
+++ b/dev/a3-earthquake/quake_app.h
@@ -0,0 +1,84 @@
+/** CSci-4611 Assignment 3: Earthquake
+ */
+
+#ifndef QUAKEAPP_H_
+#define QUAKEAPP_H_
+
+#include <mingfx.h>
+using namespace mingfx;
+
+#include "earthquake_database.h"
+#include "earth.h"
+
+#include <string>
+#include <vector>
+
+
+/** Main application class for the Earthquake app.
+ */
+class QuakeApp : public GraphicsApp {
+public:
+
+ QuakeApp();
+ virtual ~QuakeApp();
+
+ /// Dragging with the mouse tilts the earth when in globe mode
+ void OnLeftMouseDrag(const Point2 &pos, const Vector2 &delta);
+
+ /// Pressing the globe button toggles between flat earth and sphere earth modes
+ void OnGlobeBtnPressed();
+
+ /// Pressing the debug button toggles on/off the underlying triangle mesh and normals
+ void OnDebugBtnPressed();
+
+ /// The slides controls the speed of the playback for the earthquakes animation
+ void OnSliderUpdate(float value);
+
+
+ /// The animation gets updated inside this function.
+ void UpdateSimulation(double dt);
+
+ /// Initializes NanoGUI widgets
+ void InitNanoGUI();
+
+ /// The models and textures get initialized in this function.
+ void InitOpenGL();
+
+ /// The earth and earthquake spheres get drawn in this function.
+ void DrawUsingOpenGL();
+
+private:
+ // controls playback
+ double current_time_;
+ double playback_scale_;
+
+ // true if drawing debugging info for the mesh
+ bool debug_mode_;
+
+ // Database through which you can access the earthquakes
+ EarthquakeDatabase quake_db_;
+
+ // Object for rendering textured earth geometry
+ Earth earth_;
+
+ // Background image
+ Texture2D stars_tex_;
+
+ // Sets up the computer graphics camera
+ Matrix4 view_matrix_;
+ Matrix4 proj_matrix_;
+
+ // Gui elements
+ nanogui::Button *globe_btn_;
+ nanogui::Label *date_label_;
+ nanogui::TextBox *speed_box_;
+
+ // A list of paths to search for data files (images and shaders)
+ std::vector<std::string> search_path_;
+
+ // Used to draw a background texture, you can also use this to draw the
+ // earthquakes if you want.
+ QuickShapes quick_shapes_;
+};
+
+#endif \ No newline at end of file