/*****************************************************************************
 * $LastChangedDate: 2011-04-09 21:58:06 -0400 (Sat, 09 Apr 2011) $
 * @file
 * @author  Jim E. Brooks  http://www.palomino3d.org
 * @brief   Observer of a view of the scene.
 *//*
 * LEGAL:   COPYRIGHT (C) 2009 JIM E. BROOKS
 *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
 *          OF THE GNU GENERAL PUBLIC LICENSE VERSION 2 (GPL 2).
 *****************************************************************************/

#ifndef VIEW_OBSERVER_HH
#define VIEW_OBSERVER_HH 1

namespace view {

////////////////////////////////////////////////////////////////////////////////
/// @brief Observer of a view of the scene.
///
/// The Observer is the source of the Viewpoint (View Matrix).
/// Pass Observer object to OtwViewpoint ctor so it will provide the Observer Matrix.
///
class Observer : public Shared
{
PREVENT_COPYING(Observer)
public:
                    Observer( void ) { SET_TYPESIG(this,TYPESIG_OBSERVER); }
    virtual         ~Observer()      { INVALIDATE_TYPESIG(this,TYPESIG_OBSERVER); }
    virtual Matrix  GetObserverMatrix( void ) = 0;

public:
    DECLARE_TYPESIG(TYPESIG_OBSERVER)
};

} // namespace view

#endif // VIEW_OBSERVER_HH
