X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Feffects%2Fenvironmentmap.cpp;h=47cea0904017c2daa7bbeff4328ec7d5d4128573;hp=315390b1ca81664c47a2a5c940ef445ee94faa97;hb=3867df2040d1fb955158ca3bd8fbf5271ad66fb2;hpb=3f245515062d10e4d527827e5126fe412de06ce0 diff --git a/source/effects/environmentmap.cpp b/source/effects/environmentmap.cpp index 315390b1..47cea090 100644 --- a/source/effects/environmentmap.cpp +++ b/source/effects/environmentmap.cpp @@ -79,6 +79,12 @@ EnvironmentMap::EnvironmentMap(unsigned s, PixelFormat f, unsigned l, Renderable shdata.uniform("env_world_matrix", LinAl::SquareMatrix::identity()); } +void EnvironmentMap::set_fixed_position(const Vector3 &p) +{ + fixed_position = p; + use_fixed_pos = true; +} + void EnvironmentMap::set_depth_clip(float n, float f) { for(unsigned i=0; i<6; ++i) @@ -113,16 +119,22 @@ void EnvironmentMap::setup_frame(Renderer &renderer) update_delay = update_interval-1; environment.setup_frame(renderer); - const Matrix *matrix = renderable.get_matrix(); - if(!matrix) - return; + Vector3 center; + if(use_fixed_pos) + center = fixed_position; + else + { + const Matrix *matrix = renderable.get_matrix(); + if(!matrix) + return; + + center = matrix->column(3).slice<3>(0); + } Renderer::Push push(renderer); Renderer::Exclude exclude1(renderer, renderable); Renderer::Exclude exclude2(renderer, *this); - Vector3 center = matrix->column(3).slice<3>(0); - for(unsigned i=0; i<6; ++i) { faces[i].camera.set_position(center);