forked from teamnwah/openmw-tes3coop
ambient lighting in interior cells
parent
7e0f0c8402
commit
4a119c8f46
@ -1,6 +1,60 @@
|
|||||||
|
|
||||||
#include "unpagedworldspacewidget.hpp"
|
#include "unpagedworldspacewidget.hpp"
|
||||||
|
|
||||||
CSVRender::UnpagedWorldspaceWidget::UnpagedWorldspaceWidget (QWidget *parent)
|
#include <OgreColourValue.h>
|
||||||
: WorldspaceWidget (parent)
|
|
||||||
{}
|
#include "../../model/doc/document.hpp"
|
||||||
|
|
||||||
|
#include "../../model/world/data.hpp"
|
||||||
|
#include "../../model/world/idtable.hpp"
|
||||||
|
|
||||||
|
void CSVRender::UnpagedWorldspaceWidget::update()
|
||||||
|
{
|
||||||
|
const CSMWorld::Record<CSMWorld::Cell>& record =
|
||||||
|
dynamic_cast<const CSMWorld::Record<CSMWorld::Cell>&> (mCellsModel->getRecord (mCellId));
|
||||||
|
|
||||||
|
Ogre::ColourValue colour;
|
||||||
|
colour.setAsABGR (record.get().mAmbi.mAmbient);
|
||||||
|
setAmbient (colour);
|
||||||
|
|
||||||
|
/// \todo deal with mSunlight and mFog/mForDensity
|
||||||
|
}
|
||||||
|
|
||||||
|
CSVRender::UnpagedWorldspaceWidget::UnpagedWorldspaceWidget (const std::string& cellId,
|
||||||
|
CSMDoc::Document& document, QWidget *parent)
|
||||||
|
: WorldspaceWidget (parent), mCellId (cellId)
|
||||||
|
{
|
||||||
|
mCellsModel = &dynamic_cast<CSMWorld::IdTable&> (
|
||||||
|
*document.getData().getTableModel (CSMWorld::UniversalId::Type_Cells));
|
||||||
|
|
||||||
|
connect (mCellsModel, SIGNAL (dataChanged (const QModelIndex&, const QModelIndex&)),
|
||||||
|
this, SLOT (cellDataChanged (const QModelIndex&, const QModelIndex&)));
|
||||||
|
connect (mCellsModel, SIGNAL (rowsAboutToBeRemoved (const QModelIndex&, int, int)),
|
||||||
|
this, SLOT (cellRowsAboutToBeRemoved (const QModelIndex&, int, int)));
|
||||||
|
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSVRender::UnpagedWorldspaceWidget::cellDataChanged (const QModelIndex& topLeft,
|
||||||
|
const QModelIndex& bottomRight)
|
||||||
|
{
|
||||||
|
QModelIndex cellIndex = mCellsModel->getModelIndex (mCellId, 0);
|
||||||
|
|
||||||
|
if (cellIndex.row()>=topLeft.row() && cellIndex.row()<bottomRight.row())
|
||||||
|
{
|
||||||
|
/// \todo possible optimisation: check columns and update only if relevant columns have
|
||||||
|
/// changed
|
||||||
|
update();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CSVRender::UnpagedWorldspaceWidget::cellRowsAboutToBeRemoved (const QModelIndex& parent,
|
||||||
|
int start, int end)
|
||||||
|
{
|
||||||
|
QModelIndex cellIndex = mCellsModel->getModelIndex (mCellId, 0);
|
||||||
|
|
||||||
|
if (cellIndex.row()>=start && cellIndex.row()<=end)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue