1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
|
/* This file is part of the Spring engine (GPL v2 or later), see LICENSE.html */
#ifndef _GL_LIGHTHANDLER_H
#define _GL_LIGHTHANDLER_H
#include <vector>
#include "Light.h"
namespace Shader {
struct IProgramObject;
}
namespace GL {
struct LightHandler {
public:
LightHandler(): baseLight(0), maxLights(0), numLights(0), lightHandle(0) {}
~LightHandler() { Kill(); }
void Init(unsigned int, unsigned int);
void Kill() { lights.clear(); }
void Update(Shader::IProgramObject*);
unsigned int AddLight(const GL::Light&);
unsigned int SetLight(unsigned int lgtIndex, const GL::Light&);
GL::Light* GetLight(unsigned int lgtHandle);
unsigned int GetBaseLight() const { return baseLight; }
unsigned int GetMaxLights() const { return maxLights; }
private:
std::vector<GL::Light> lights;
unsigned int baseLight;
unsigned int maxLights;
unsigned int numLights;
unsigned int lightHandle;
};
}
#endif // _GL_LIGHTHANDLER_H
|