/********************************************************************/ /* Copyright (c) 2017 System fugen G.K. and Yuzi Mizuno */ /* All rights reserved. */ /********************************************************************/ #pragma once #ifndef _MGLIGHTS_HH_ #define _MGLIGHTS_HH_ #include "mgGL/GLAttrib.h" class MGOfstream; class MGIfstream; class MGLight; /** @addtogroup GLAttrib * @{ */ ///a container class for light sources(MGDirectionalLight, MGPointLight, or MGSpotLight). ///MGLights contains the light data as MGPvector(a vector of newed MGLight's). class MG_DLL_DECLR MGLights:public MGGLAttrib{ public: typedef MGPvector::iterator iterator ; typedef MGPvector::const_iterator const_iterator; typedef MGPvector::reverse_iterator reverse_iterator ; typedef MGPvector::const_reverse_iterator const_reverse_iterator; // Constructors MGLights(); ///Construct MGLights of one light. MGLights( MGLight* light ):MGGLAttrib(1),m_lights(light){;}; ///virtual ~MGLights(); public: ///Assignment MGLights& operator=(const MGGel& gel2); MGLights& operator=(const MGLights& gel2); ///comparison bool operator<(const MGLights& gel2)const; bool operator<(const MGGel& gel2)const; const MGLight* back()const{return m_lights.back();}; MGLight* back(){return m_lights.back();}; iterator begin(){return m_lights.begin();}; const_iterator begin()const{return m_lights.begin();}; void clear(){m_lights.clear();}; bool empty()const{return m_lights.empty();}; iterator end(){return m_lights.end();}; const_iterator end()const{return m_lights.end();}; const MGLight* front()const{return m_lights.front();}; MGLight* front(){return m_lights.front();}; const MGLight* operator[](int i)const{return m_lights[i];}; MGLight* operator[](int i){return m_lights[i];}; void pop_back(){m_lights.pop_back();}; ///Generate a newed clone object. virtual MGLights* clone()const; ///render GLAttribute process. virtual void exec()const; ///draw GLAttribute process. void drawAttrib( mgVBO& vbo,/// m_lights;///