//C++ header - Open Scene Graph - Copyright (C) 1998-2001 Robert Osfield
//Distributed under the terms of the GNU Library General Public License (LGPL)
//as published by the Free Software Foundation.

#ifndef OSG_LIGHTSOURCE
#define OSG_LIGHTSOURCE 1

#include <osg/MemoryAdapter>
#include <osg/NodeVisitor>
#include <osg/Light>

namespace osg {

/** Leaf Node for defining a light in the scene.*/
class SG_EXPORT LightSource : public Node
{
    public:

        LightSource();

        LightSource(const LightSource& es, const CopyOp& copyop=CopyOp::SHALLOW_COPY):
            Node(es,copyop),
            _light(dynamic_cast<osg::Light*>(copyop(es._light.get()))) {}

        META_Node(LightSource);

        /** Set the attached light.*/
        inline void setLight(Light* light) { _light = light; }

        /** Get the attached light.*/
        inline Light* getLight() { return _light.get(); }

        /** Get the const attached light.*/
        inline const Light* getLight() const { return _light.get(); }

    protected:

        virtual ~LightSource();

        virtual const bool computeBound() const;

        ref_ptr<Light> _light;
};

}

#endif
