git-svn-id: svn://db.shs.com.ru/libs@636 a8b55f48-bf90-11e4-a774-851b48703e85
This commit is contained in:
@@ -123,6 +123,21 @@ void RendererBase::setUniformViewCorners(QOpenGLShaderProgram * prog, Camera * c
|
||||
}
|
||||
|
||||
|
||||
void RendererBase::fillSelectionsBuffer(QVector<uchar> & buffer, const QList<ObjectBase *> & ol) {
|
||||
buffer.resize(ol.size());
|
||||
for (int i = 0; i < ol.size(); ++i) {
|
||||
buffer[i] = (ol[i]->isSelected(true) ? 1 : 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RendererBase::fillSelectionsBuffer(QVector<uchar> & buffer, bool yes, int size) {
|
||||
buffer.resize(size);
|
||||
for (int i = 0; i < size; ++i)
|
||||
buffer[i] = (yes ? 1 : 0);
|
||||
}
|
||||
|
||||
|
||||
void RendererBase::reloadMaterials(Scene & scene) {
|
||||
//qDebug() << "reloadMaterias";
|
||||
QList<Map*> maps[2];
|
||||
@@ -199,12 +214,21 @@ void RendererBase::reloadMaterials(Scene & scene) {
|
||||
}
|
||||
|
||||
|
||||
void RendererBase::reloadLightsParameters(const QList<Light*> & lights) {
|
||||
cur_lights_params_.resize(qMin(lights.size(), max_lights));
|
||||
void RendererBase::reloadLightsParameters(const QMap<int, QList<Light*>> & lights) {
|
||||
lights_start.clear();
|
||||
lights_start[Light::Omni] = 0;
|
||||
QMapIterator<int, QList<Light*>> it(lights);
|
||||
current_lights.clear();
|
||||
while (it.hasNext()) {
|
||||
it.next();
|
||||
lights_start[it.key()] = current_lights.size();
|
||||
current_lights.append(it.value());
|
||||
}
|
||||
cur_lights_params_.resize(qMin(current_lights.size(), max_lights));
|
||||
//qDebug() << "reloadLightsParameters" << cur_lights_params_.size();
|
||||
for (int i = 0; i < cur_lights_params_.size(); ++i) {
|
||||
QGLLightParameter & so(cur_lights_params_[i]);
|
||||
Light * l = lights[i];
|
||||
Light * l = current_lights[i];
|
||||
double ang_start = l->angle_start / 2.f, ang_end = l->angle_end / 2.f;
|
||||
if (l->light_type == Light::Omni)
|
||||
ang_start = ang_end = 180.;
|
||||
@@ -227,12 +251,12 @@ void RendererBase::reloadLightsParameters(const QList<Light*> & lights) {
|
||||
}
|
||||
|
||||
|
||||
void RendererBase::reloadLightsPositions(const QList<Light *> & lights, Camera * cam) {
|
||||
cur_lights_pos_.resize(qMin(lights.size(), max_lights));
|
||||
void RendererBase::reloadLightsPositions(Camera * cam) {
|
||||
cur_lights_pos_.resize(qMin(current_lights.size(), max_lights));
|
||||
QMatrix4x4 mat = cam->viewMatrix() * cam->offsetMatrix();
|
||||
for (int i = 0; i < cur_lights_pos_.size(); ++i) {
|
||||
QGLLightPosition & so(cur_lights_pos_[i]);
|
||||
Light * l = lights[i];
|
||||
Light * l = current_lights[i];
|
||||
QMatrix4x4 m = mat * l->worldTransform();
|
||||
QVector4D pos(0, 0, 0, 1.), dir(l->direction, 1);//, dir0(light->dir0), dir1(light->dir1);
|
||||
pos = m * pos;
|
||||
|
||||
Reference in New Issue
Block a user