X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=source%2F3d%2Fview.h;h=a191a150ec60e1cd9819ed2ce8e7bd9a1f9db884;hb=66a30fdf63df6ae092fb3d335c30a37e4e6ef40d;hp=f18f0a1f6a8bc95201f5dd9fbbcef339b09cc4ce;hpb=495c54e187ddbb7514c983e1829a69d82ccad5f3;p=r2c2.git diff --git a/source/3d/view.h b/source/3d/view.h index f18f0a1..a191a15 100644 --- a/source/3d/view.h +++ b/source/3d/view.h @@ -1,37 +1,50 @@ -/* $Id$ - -This file is part of R²C² -Copyright © 2011 Mikkosoft Productions, Mikko Rasa -Distributed under the GPL -*/ - #ifndef R2C2_3D_VIEW_H_ #define R2C2_3D_VIEW_H_ +#include #include +#include #include +#include +#include "sky.h" namespace R2C2 { class Layout3D; -class View3D +class View3D: public sigc::trackable { protected: Layout3D &layout; + unsigned width; + unsigned height; Msp::GL::Camera camera; Msp::GL::Pipeline pipeline; + Sky3D sky; + Msp::GL::ShadowMap shadow; + Msp::GL::ColorCurve *colorcurve; + Msp::GL::AmbientOcclusion *ambient_occlusion; public: View3D(Layout3D &, unsigned, unsigned); + ~View3D(); Layout3D &get_layout() const { return layout; } Msp::GL::Camera &get_camera() { return camera; } Msp::GL::Pipeline &get_pipeline() { return pipeline; } + Ray create_ray(int, int) const; + Ray create_ray(float, float) const; + +private: + void compute_bounds(Vector &, Vector &); +public: void view_all(bool = false); void render(); + +private: + void update_shadow_area(); }; } // namespace R2C2