mirror of
https://gitlab.com/OpenMW/openmw.git
synced 2025-01-26 09:35:28 +00:00
Update scene assets
This commit is contained in:
parent
742bd00ec6
commit
5950b26912
@ -1247,6 +1247,8 @@ void CSMWorld::Data::assetsChanged()
|
|||||||
|
|
||||||
// Get rid of potentially old cached assets
|
// Get rid of potentially old cached assets
|
||||||
mResourceSystem->clearCache();
|
mResourceSystem->clearCache();
|
||||||
|
|
||||||
|
emit assetTablesChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void CSMWorld::Data::dataChanged (const QModelIndex& topLeft, const QModelIndex& bottomRight)
|
void CSMWorld::Data::dataChanged (const QModelIndex& topLeft, const QModelIndex& bottomRight)
|
||||||
|
@ -304,6 +304,8 @@ namespace CSMWorld
|
|||||||
|
|
||||||
void idListChanged();
|
void idListChanged();
|
||||||
|
|
||||||
|
void assetTablesChanged();
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void assetsChanged();
|
void assetsChanged();
|
||||||
|
@ -283,6 +283,15 @@ void CSVRender::Cell::pathgridRemoved()
|
|||||||
mPathgrid->removeGeometry();
|
mPathgrid->removeGeometry();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSVRender::Cell::reloadAssets()
|
||||||
|
{
|
||||||
|
for (std::map<std::string, Object *>::const_iterator iter (mObjects.begin());
|
||||||
|
iter != mObjects.end(); ++iter)
|
||||||
|
{
|
||||||
|
iter->second->reloadAssets();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CSVRender::Cell::setSelection (int elementMask, Selection mode)
|
void CSVRender::Cell::setSelection (int elementMask, Selection mode)
|
||||||
{
|
{
|
||||||
if (elementMask & Mask_Reference)
|
if (elementMask & Mask_Reference)
|
||||||
|
@ -118,6 +118,8 @@ namespace CSVRender
|
|||||||
|
|
||||||
void pathgridRemoved();
|
void pathgridRemoved();
|
||||||
|
|
||||||
|
void reloadAssets();
|
||||||
|
|
||||||
void setSelection (int elementMask, Selection mode);
|
void setSelection (int elementMask, Selection mode);
|
||||||
|
|
||||||
// Select everything that references the same ID as at least one of the elements
|
// Select everything that references the same ID as at least one of the elements
|
||||||
|
@ -532,6 +532,12 @@ bool CSVRender::Object::referenceDataChanged (const QModelIndex& topLeft,
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSVRender::Object::reloadAssets()
|
||||||
|
{
|
||||||
|
update();
|
||||||
|
updateMarker();
|
||||||
|
}
|
||||||
|
|
||||||
std::string CSVRender::Object::getReferenceId() const
|
std::string CSVRender::Object::getReferenceId() const
|
||||||
{
|
{
|
||||||
return mReferenceId;
|
return mReferenceId;
|
||||||
|
@ -151,6 +151,9 @@ namespace CSVRender
|
|||||||
/// this object?
|
/// this object?
|
||||||
bool referenceDataChanged (const QModelIndex& topLeft, const QModelIndex& bottomRight);
|
bool referenceDataChanged (const QModelIndex& topLeft, const QModelIndex& bottomRight);
|
||||||
|
|
||||||
|
/// Reloads the underlying asset
|
||||||
|
void reloadAssets();
|
||||||
|
|
||||||
/// Returns an empty string if this is a refereceable-type object.
|
/// Returns an empty string if this is a refereceable-type object.
|
||||||
std::string getReferenceId() const;
|
std::string getReferenceId() const;
|
||||||
|
|
||||||
|
@ -472,6 +472,9 @@ CSVRender::PagedWorldspaceWidget::PagedWorldspaceWidget (QWidget* parent, CSMDoc
|
|||||||
connect (cells, SIGNAL (rowsInserted (const QModelIndex&, int, int)),
|
connect (cells, SIGNAL (rowsInserted (const QModelIndex&, int, int)),
|
||||||
this, SLOT (cellAdded (const QModelIndex&, int, int)));
|
this, SLOT (cellAdded (const QModelIndex&, int, int)));
|
||||||
|
|
||||||
|
connect (&document.getData(), SIGNAL (assetTablesChanged ()),
|
||||||
|
this, SLOT (assetTablesChanged ()));
|
||||||
|
|
||||||
// Shortcuts
|
// Shortcuts
|
||||||
CSMPrefs::Shortcut* loadCameraCellShortcut = new CSMPrefs::Shortcut("scene-load-cam-cell", this);
|
CSMPrefs::Shortcut* loadCameraCellShortcut = new CSMPrefs::Shortcut("scene-load-cam-cell", this);
|
||||||
connect(loadCameraCellShortcut, SIGNAL(activated()), this, SLOT(loadCameraCell()));
|
connect(loadCameraCellShortcut, SIGNAL(activated()), this, SLOT(loadCameraCell()));
|
||||||
@ -520,7 +523,7 @@ void CSVRender::PagedWorldspaceWidget::useViewHint (const std::string& hint)
|
|||||||
// Loop through all the coordinates to add them to selection
|
// Loop through all the coordinates to add them to selection
|
||||||
while (stream >> ignore1 >> ignore2 >> x >> y)
|
while (stream >> ignore1 >> ignore2 >> x >> y)
|
||||||
selection.add (CSMWorld::CellCoordinates (x, y));
|
selection.add (CSMWorld::CellCoordinates (x, y));
|
||||||
|
|
||||||
// Mark that camera needs setup
|
// Mark that camera needs setup
|
||||||
mCamPositionSet=false;
|
mCamPositionSet=false;
|
||||||
}
|
}
|
||||||
@ -763,6 +766,15 @@ void CSVRender::PagedWorldspaceWidget::cellAdded (const QModelIndex& index, int
|
|||||||
flagAsModified();
|
flagAsModified();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSVRender::PagedWorldspaceWidget::assetTablesChanged()
|
||||||
|
{
|
||||||
|
std::map<CSMWorld::CellCoordinates, Cell *>::iterator iter = mCells.begin();
|
||||||
|
for ( ; iter != mCells.end(); ++iter)
|
||||||
|
{
|
||||||
|
iter->second->reloadAssets();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void CSVRender::PagedWorldspaceWidget::loadCameraCell()
|
void CSVRender::PagedWorldspaceWidget::loadCameraCell()
|
||||||
{
|
{
|
||||||
addCellToSceneFromCamera(0, 0);
|
addCellToSceneFromCamera(0, 0);
|
||||||
|
@ -84,7 +84,7 @@ namespace CSVRender
|
|||||||
/// hint system.
|
/// hint system.
|
||||||
|
|
||||||
virtual ~PagedWorldspaceWidget();
|
virtual ~PagedWorldspaceWidget();
|
||||||
|
|
||||||
/// Decodes the the hint string to set of cell that are rendered.
|
/// Decodes the the hint string to set of cell that are rendered.
|
||||||
void useViewHint (const std::string& hint);
|
void useViewHint (const std::string& hint);
|
||||||
|
|
||||||
@ -155,6 +155,8 @@ namespace CSVRender
|
|||||||
|
|
||||||
virtual void cellAdded (const QModelIndex& index, int start, int end);
|
virtual void cellAdded (const QModelIndex& index, int start, int end);
|
||||||
|
|
||||||
|
void assetTablesChanged ();
|
||||||
|
|
||||||
void loadCameraCell();
|
void loadCameraCell();
|
||||||
|
|
||||||
void loadEastCell();
|
void loadEastCell();
|
||||||
|
@ -17,6 +17,9 @@ CSVRender::PreviewWidget::PreviewWidget (CSMWorld::Data& data,
|
|||||||
connect (referenceables, SIGNAL (rowsAboutToBeRemoved (const QModelIndex&, int, int)),
|
connect (referenceables, SIGNAL (rowsAboutToBeRemoved (const QModelIndex&, int, int)),
|
||||||
this, SLOT (referenceableAboutToBeRemoved (const QModelIndex&, int, int)));
|
this, SLOT (referenceableAboutToBeRemoved (const QModelIndex&, int, int)));
|
||||||
|
|
||||||
|
connect (&mData, SIGNAL (assetTablesChanged ()),
|
||||||
|
this, SLOT (assetTablesChanged ()));
|
||||||
|
|
||||||
if (!referenceable)
|
if (!referenceable)
|
||||||
{
|
{
|
||||||
QAbstractItemModel *references =
|
QAbstractItemModel *references =
|
||||||
@ -119,3 +122,8 @@ void CSVRender::PreviewWidget::referenceAboutToBeRemoved (const QModelIndex& par
|
|||||||
if (index.row()>=start && index.row()<=end)
|
if (index.row()>=start && index.row()<=end)
|
||||||
emit closeRequest();
|
emit closeRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSVRender::PreviewWidget::assetTablesChanged ()
|
||||||
|
{
|
||||||
|
mObject.reloadAssets();
|
||||||
|
}
|
||||||
|
@ -47,6 +47,8 @@ namespace CSVRender
|
|||||||
void referenceDataChanged (const QModelIndex& topLeft, const QModelIndex& bottomRight);
|
void referenceDataChanged (const QModelIndex& topLeft, const QModelIndex& bottomRight);
|
||||||
|
|
||||||
void referenceAboutToBeRemoved (const QModelIndex& parent, int start, int end);
|
void referenceAboutToBeRemoved (const QModelIndex& parent, int start, int end);
|
||||||
|
|
||||||
|
void assetTablesChanged ();
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -47,6 +47,9 @@ CSVRender::UnpagedWorldspaceWidget::UnpagedWorldspaceWidget (const std::string&
|
|||||||
connect (mCellsModel, SIGNAL (rowsAboutToBeRemoved (const QModelIndex&, int, int)),
|
connect (mCellsModel, SIGNAL (rowsAboutToBeRemoved (const QModelIndex&, int, int)),
|
||||||
this, SLOT (cellRowsAboutToBeRemoved (const QModelIndex&, int, int)));
|
this, SLOT (cellRowsAboutToBeRemoved (const QModelIndex&, int, int)));
|
||||||
|
|
||||||
|
connect (&document.getData(), SIGNAL (assetTablesChanged ()),
|
||||||
|
this, SLOT (assetTablesChanged ()));
|
||||||
|
|
||||||
update();
|
update();
|
||||||
|
|
||||||
mCell.reset (new Cell (document.getData(), mRootNode, mCellId));
|
mCell.reset (new Cell (document.getData(), mRootNode, mCellId));
|
||||||
@ -82,6 +85,12 @@ void CSVRender::UnpagedWorldspaceWidget::cellRowsAboutToBeRemoved (const QModelI
|
|||||||
emit closeRequest();
|
emit closeRequest();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CSVRender::UnpagedWorldspaceWidget::assetTablesChanged()
|
||||||
|
{
|
||||||
|
if (mCell)
|
||||||
|
mCell->reloadAssets();
|
||||||
|
}
|
||||||
|
|
||||||
bool CSVRender::UnpagedWorldspaceWidget::handleDrop (const std::vector<CSMWorld::UniversalId>& universalIdData, DropType type)
|
bool CSVRender::UnpagedWorldspaceWidget::handleDrop (const std::vector<CSMWorld::UniversalId>& universalIdData, DropType type)
|
||||||
{
|
{
|
||||||
if (WorldspaceWidget::handleDrop (universalIdData, type))
|
if (WorldspaceWidget::handleDrop (universalIdData, type))
|
||||||
|
@ -108,6 +108,8 @@ namespace CSVRender
|
|||||||
|
|
||||||
void cellRowsAboutToBeRemoved (const QModelIndex& parent, int start, int end);
|
void cellRowsAboutToBeRemoved (const QModelIndex& parent, int start, int end);
|
||||||
|
|
||||||
|
void assetTablesChanged ();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void cellChanged(const CSMWorld::UniversalId& id);
|
void cellChanged(const CSMWorld::UniversalId& id);
|
||||||
|
@ -74,8 +74,6 @@ namespace Resource
|
|||||||
{
|
{
|
||||||
for (std::vector<ResourceManager*>::iterator it = mResourceManagers.begin(); it != mResourceManagers.end(); ++it)
|
for (std::vector<ResourceManager*>::iterator it = mResourceManagers.begin(); it != mResourceManagers.end(); ++it)
|
||||||
(*it)->clearCache();
|
(*it)->clearCache();
|
||||||
|
|
||||||
osgDB::Registry::instance()->clearObjectCache();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ResourceSystem::addResourceManager(ResourceManager *resourceMgr)
|
void ResourceSystem::addResourceManager(ResourceManager *resourceMgr)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user