1 #ifndef DESERTPILLARS_H_
2 #define DESERTPILLARS_H_
5 #include <msp/core/application.h>
6 #include <msp/datafile/directorysource.h>
7 #include <msp/gl/camera.h>
8 #include <msp/gl/environmentmap.h>
9 #include <msp/gl/objectinstance.h>
10 #include <msp/gl/orderedscene.h>
11 #include <msp/gl/resourcemanager.h>
12 #include <msp/gl/resources.h>
13 #include <msp/gl/sequence.h>
14 #include <msp/gl/shadowmap.h>
15 #include <msp/gl/sky.h>
16 #include <msp/gl/technique.h>
17 #include <msp/gl/windowview.h>
18 #include <msp/graphics/display.h>
19 #include <msp/graphics/glcontext.h>
20 #include <msp/graphics/window.h>
21 #include <msp/input/keyboard.h>
22 #include <msp/time/timestamp.h>
24 class DesertPillars: public Msp::RegisteredApplication<DesertPillars>
29 Msp::Graphics::WindowOptions wnd_opts;
30 Msp::Graphics::GLOptions gl_opts;
35 class Resources: public Msp::GL::Resources
38 Msp::DataFile::DirectorySource source;
39 Msp::GL::ResourceManager res_mgr;
42 Resources(Msp::GL::ResourceManager *);
45 class MorphSphere: public Msp::GL::ObjectInstance
48 Msp::GL::ProgramData shdata;
51 MorphSphere(const Msp::GL::Object &o): ObjectInstance(o) { }
53 void set_morph(float);
55 virtual void setup_render(Msp::GL::Renderer &, Msp::GL::Tag) const;
58 class LightFlare: public Msp::GL::ObjectInstance
61 Msp::GL::ProgramData shdata;
64 LightFlare(const Msp::GL::Object &, unsigned);
66 virtual void setup_render(Msp::GL::Renderer &, Msp::GL::Tag) const;
69 Msp::Graphics::Display display;
71 Msp::Graphics::Window window;
72 Msp::Graphics::GLContext gl_ctx;
73 Msp::Input::Keyboard keyboard;
74 Msp::GL::ResourceManager res_mgr;
77 Msp::GL::WindowView view;
78 std::unique_ptr<Msp::GL::Sequence> sequence;
79 Msp::GL::Camera camera;
80 const Msp::GL::Lighting &lighting;
82 std::unique_ptr<Msp::GL::Sequence> env_seq;
83 std::unique_ptr<Msp::GL::EnvironmentMap> env_map;
84 Msp::GL::OrderedScene content;
91 Msp::GL::DirectionalLight &sun;
92 Msp::GL::Vector3 sun_node;
93 Msp::GL::Vector3 sun_axis;
94 Msp::Geometry::Angle<float> sun_angle;
96 Msp::GL::PointLight &wisp;
97 Msp::GL::Color wisp_base_color;
98 Msp::Geometry::Angle<float> wisp_angle;
101 float camera_distance;
102 Msp::Geometry::Angle<float> camera_base_height;
103 Msp::Geometry::Angle<float> camera_angle;
104 Msp::Geometry::Angle<float> sphere_angle;
106 Msp::Time::TimeStamp last_tick;
109 DesertPillars(int, char **);
115 void key_press(unsigned);