// ----------------------------------------------------------------------------
// Blitz-Irrlicht 1.8.3 Wrapper by Ed Musolino 2015
// Based off of Frank Dodd's Irrlicht 1.7 Freebasic Wrapper (2006-2010)
// ----------------------------------------------------------------------------

//  This software is provided 'as-is', without any express Or implied
//  warranty.  In no event will the authors be held liable For any damages
//  arising from the use of this software.

//  Permission is granted To anyone To use this software For any purpose,
//  including commercial applications, And To alter it And redistribute it
//  freely, subject To the following restrictions:

//  1. The Origin of this software must Not be misrepresented; you must not
//     claim that you wrote the original software. If you use this software
//     in a product, an acknowledgement in the product documentation would be
//     appreciated but is Not required.
//  2. Altered source versions must be clearly marked as such, And must Not be
//     misrepresented as being the original software.
//  3. This notice may Not be removed Or altered from any source distribution.
//
// /////////////////////////////////////////////////////////////////////////////

// Original code and artwork by Paulo Oliveira (ProSoft, http://br.geocities.com/paulo_cmv/)
// The code is Public Domain.
// With updates from gammaray and torleif

#ifndef _ILENSFLARESCENENODE_H_INCLUDED_
#define _ILENSFLARESCENENODE_H_INCLUDED_

#include "ISceneNode.h"

namespace irr
{
namespace scene
{

/** ILensFlareSceneNode

Creates a line of textures to imitate lens flare

*/
class ILensFlareSceneNode : public ISceneNode {
    public:
	// Constructor
        ILensFlareSceneNode(ISceneNode* parent, ISceneManager* mgr,
			s32 id=-1, const core::vector3df& position=core::vector3df())
		: ISceneNode(parent, mgr)
	{}

	// Returns material
        virtual video::SMaterial& getMaterial(u32 i) = 0;

	// called upon creation
        virtual void OnRegisterSceneNode() = 0;

	// called upon draw
    virtual void render() = 0;

    // get the number of materials in the scene node
    virtual u32 getMaterialCount() const = 0;

	// reset screen size
	virtual void setScreenSize(const core::dimension2d<s32>& dim) = 0;

	// returns where the camera was created
	virtual const core::vector3df& getStartPosition() = 0;
};


} // end namespace scene
} // end namespace irr

#endif

