OSGMatrixCamera.cpp

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002  *                                OpenSG                                     *
00003  *                                                                           *
00004  *                                                                           *
00005  *             Copyright (C) 2000-2002 by the OpenSG Forum                   *
00006  *                                                                           *
00007  *                            www.opensg.org                                 *
00008  *                                                                           *
00009  *   contact: dirk@opensg.org, gerrit.voss@vossg.org, jbehr@zgdv.de          *
00010  *                                                                           *
00011 \*---------------------------------------------------------------------------*/
00012 /*---------------------------------------------------------------------------*\
00013  *                                License                                    *
00014  *                                                                           *
00015  * This library is free software; you can redistribute it and/or modify it   *
00016  * under the terms of the GNU Library General Public License as published    *
00017  * by the Free Software Foundation, version 2.                               *
00018  *                                                                           *
00019  * This library is distributed in the hope that it will be useful, but       *
00020  * WITHOUT ANY WARRANTY; without even the implied warranty of                *
00021  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU         *
00022  * Library General Public License for more details.                          *
00023  *                                                                           *
00024  * You should have received a copy of the GNU Library General Public         *
00025  * License along with this library; if not, write to the Free Software       *
00026  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.                 *
00027  *                                                                           *
00028 \*---------------------------------------------------------------------------*/
00029 /*---------------------------------------------------------------------------*\
00030  *                                Changes                                    *
00031  *                                                                           *
00032  *                                                                           *
00033  *                                                                           *
00034  *                                                                           *
00035  *                                                                           *
00036  *                                                                           *
00037 \*---------------------------------------------------------------------------*/
00038
00039 //---------------------------------------------------------------------------
00040 //  Includes
00041 //---------------------------------------------------------------------------
00042
00043 #include <cstdlib>
00044 #include <cstdio>
00045
00046 #include "OSGConfig.h"
00047
00048 #include "OSGMatrixCamera.h"
00049
00050 OSG_USING_NAMESPACE
00051
00052 // Documentation for this class is emited in the
00053 // OSGMatrixCameraBase.cpp file.
00054 // To modify it, please change the .fcd file (OSGMatrixCamera.fcd) and
00055 // regenerate the base file.
00056
00057 /***************************************************************************\
00058  *                           Class methods                                 *
00059 \***************************************************************************/
00060
00061 /*-------------------------------------------------------------------------*\
00062  -  private                                                                -
00063 \*-------------------------------------------------------------------------*/
00064
00065 void MatrixCamera::initMethod(InitPhase ePhase)
00066 {
00067     Inherited::initMethod(ePhase);
00068 }
00069
00070 /***************************************************************************\
00071  *                           Instance methods                              *
00072 \***************************************************************************/
00073
00074 /*------------- constructors & destructors --------------------------------*/
00075
00076 MatrixCamera::MatrixCamera(void) :
00077     Inherited()
00078 {
00079 }
00080
00081 MatrixCamera::MatrixCamera(const MatrixCamera &source) :
00082     Inherited(source)
00083 {
00084 }
00085
00086 MatrixCamera::~MatrixCamera(void)
00087 {
00088 }
00089
00090 void MatrixCamera::changed(ConstFieldMaskArg whichField,
00091                            UInt32            origin,
00092                            BitVector         details)
00093 {
00094     Inherited::changed(whichField, origin, details);
00095 }
00096
00097 /*------------------------------- dump ----------------------------------*/
00098
00099 void MatrixCamera::dump(      UInt32     OSG_CHECK_ARG(uiIndent),
00100                         const BitVector OSG_CHECK_ARG(bvFlags)) const
00101 {
00102     SLOG << "Dump MatrixCamera NI" << std::endl;
00103 }
00104
00105
00106 void MatrixCamera::getProjection(Matrix& result, UInt32 OSG_CHECK_ARG(width),
00107                                                  UInt32 OSG_CHECK_ARG(height))
00108 {
00109     result = getProjectionMatrix();
00110 }
00111
00112 void MatrixCamera::getViewing(Matrix& result, UInt32 OSG_CHECK_ARG(width),
00113                                               UInt32 OSG_CHECK_ARG(height))
00114 {
00115     if(_sfUseBeacon.getValue() == true && _sfBeacon.getValue() != NULL)
00116     {
00117         getBeacon()->getToWorld(result);
00118         result.invert();
00119     }
00120     else
00121     {
00122         result = getModelviewMatrix();
00123     }
00124 }
00125