server/frustum.cpp
00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #include "frustum.h"
00019
00020 #include "config.h"
00021 #include "frustumData.h"
00022
00023 #include <eq/net/dataIStream.h>
00024 #include <eq/net/dataOStream.h>
00025
00026 using namespace eq::base;
00027
00028 namespace eq
00029 {
00030 namespace server
00031 {
00032 Frustum::Frustum( FrustumData& data )
00033 : _data( data )
00034 {
00035 _updateFrustum();
00036 }
00037
00038 Frustum::Frustum( const Frustum& from, FrustumData& data )
00039 : eq::Frustum( from )
00040 , _data( data )
00041 {
00042 _updateFrustum();
00043 }
00044
00045 void Frustum::setWall( const eq::Wall& wall )
00046 {
00047 eq::Frustum::setWall( wall );
00048 _updateFrustum();
00049 }
00050
00051 void Frustum::setProjection( const eq::Projection& projection )
00052 {
00053 eq::Frustum::setProjection( projection );
00054 _updateFrustum();
00055 }
00056
00057 void Frustum::_updateFrustum()
00058 {
00059 switch( getCurrentType( ))
00060 {
00061 case TYPE_WALL:
00062 _data.applyWall( getWall( ));
00063 break;
00064 case TYPE_PROJECTION:
00065 _data.applyProjection( getProjection( ));
00066 break;
00067
00068 case TYPE_NONE:
00069 _data.invalidate();
00070 break;
00071 default:
00072 EQUNREACHABLE;
00073 }
00074 }
00075
00076 }
00077 }