mirror of
https://github.com/rwengine/openrw.git
synced 2025-05-09 03:57:45 +03:00
Fix compilation and runtime issues with reviewer from recent changes
This commit is contained in:
parent
f3b81c5690
commit
76eb43c023
11 changed files with 70 additions and 43 deletions
|
@ -1,5 +1,5 @@
|
||||||
#include "ViewerWidget.hpp"
|
#include "ViewerWidget.hpp"
|
||||||
#include <render/Model.hpp>
|
#include <data/Model.hpp>
|
||||||
#include <render/GameRenderer.hpp>
|
#include <render/GameRenderer.hpp>
|
||||||
#include <render/OpenGLRenderer.hpp>
|
#include <render/OpenGLRenderer.hpp>
|
||||||
#include <glm/gtc/type_ptr.hpp>
|
#include <glm/gtc/type_ptr.hpp>
|
||||||
|
@ -187,7 +187,10 @@ void ViewerWidget::showObject(qint16 item)
|
||||||
{
|
{
|
||||||
dummyObject = gworld->createVehicle(item, {});
|
dummyObject = gworld->createVehicle(item, {});
|
||||||
}
|
}
|
||||||
activeModel = dummyObject->model->resource;
|
RW_CHECK(dummyObject != nullptr, "Dummy Object is null");
|
||||||
|
if (dummyObject != nullptr) {
|
||||||
|
activeModel = dummyObject->model->resource;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3,14 +3,18 @@
|
||||||
#define _VIEWERWIDGET_HPP_
|
#define _VIEWERWIDGET_HPP_
|
||||||
#include <engine/GameData.hpp>
|
#include <engine/GameData.hpp>
|
||||||
#include <engine/GameWorld.hpp>
|
#include <engine/GameWorld.hpp>
|
||||||
#include <QGLWidget>
|
|
||||||
#include <QTimer>
|
#include <QTimer>
|
||||||
#include <loaders/LoaderIFP.hpp>
|
#include <loaders/LoaderIFP.hpp>
|
||||||
#include <render/DrawBuffer.hpp>
|
#include <gl/DrawBuffer.hpp>
|
||||||
#include <render/GeometryBuffer.hpp>
|
#include <gl/GeometryBuffer.hpp>
|
||||||
#include <render/Model.hpp>
|
#include <data/Model.hpp>
|
||||||
#include <glm/glm.hpp>
|
#include <glm/glm.hpp>
|
||||||
|
|
||||||
|
// Prevent Qt from conflicting with glLoadGen
|
||||||
|
#define GL_ARB_debug_output
|
||||||
|
#define GL_KHR_debug
|
||||||
|
#include <QGLWidget>
|
||||||
|
|
||||||
class GameRenderer;
|
class GameRenderer;
|
||||||
class Model;
|
class Model;
|
||||||
class ViewerWidget : public QGLWidget
|
class ViewerWidget : public QGLWidget
|
||||||
|
|
|
@ -101,33 +101,10 @@ void ViewerWindow::closeEvent(QCloseEvent* event)
|
||||||
|
|
||||||
void ViewerWindow::openAnimations()
|
void ViewerWindow::openAnimations()
|
||||||
{
|
{
|
||||||
#if 0
|
|
||||||
QFileDialog dialog(this, "Open Animations", QDir::homePath(), "IFP Animations (*.ifp)");
|
QFileDialog dialog(this, "Open Animations", QDir::homePath(), "IFP Animations (*.ifp)");
|
||||||
if(dialog.exec()) {
|
if(dialog.exec()) {
|
||||||
std::ifstream dfile(dialog.selectedFiles().at(0).toStdString().c_str());
|
modelViewer->loadAnimations(dialog.selectedFiles()[0]);
|
||||||
AnimationList anims;
|
|
||||||
|
|
||||||
if(dfile.is_open())
|
|
||||||
{
|
|
||||||
dfile.seekg(0, std::ios_base::end);
|
|
||||||
size_t length = dfile.tellg();
|
|
||||||
dfile.seekg(0);
|
|
||||||
char *file = new char[length];
|
|
||||||
dfile.read(file, length);
|
|
||||||
|
|
||||||
LoaderIFP loader;
|
|
||||||
if( loader.loadFromMemory(file) ) {
|
|
||||||
for(auto& f : loader.animations) {
|
|
||||||
anims.push_back(f);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
delete[] file;
|
|
||||||
}
|
|
||||||
|
|
||||||
animationswidget->setAnimations(anims);
|
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void ViewerWindow::loadGame()
|
void ViewerWindow::loadGame()
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
#include <engine/GameData.hpp>
|
#include <engine/GameData.hpp>
|
||||||
#include <engine/GameWorld.hpp>
|
#include <engine/GameWorld.hpp>
|
||||||
#include <core/Logger.hpp>
|
#include <core/Logger.hpp>
|
||||||
#include <QGLContext>
|
|
||||||
#include <QStackedWidget>
|
#include <QStackedWidget>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
|
@ -13,6 +12,7 @@ class ObjectViewer;
|
||||||
class ModelViewer;
|
class ModelViewer;
|
||||||
class ViewerWidget;
|
class ViewerWidget;
|
||||||
class GameRenderer;
|
class GameRenderer;
|
||||||
|
class QGLContext;
|
||||||
|
|
||||||
class ViewerWindow : public QMainWindow
|
class ViewerWindow : public QMainWindow
|
||||||
{
|
{
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#include "DFFFramesTreeModel.hpp"
|
#include "DFFFramesTreeModel.hpp"
|
||||||
#include <render/Model.hpp>
|
#include <data/Model.hpp>
|
||||||
#include <data/Skeleton.hpp>
|
#include <data/Skeleton.hpp>
|
||||||
|
|
||||||
DFFFramesTreeModel::DFFFramesTreeModel(Model *m, Skeleton* skel, QObject* parent)
|
DFFFramesTreeModel::DFFFramesTreeModel(Model *m, Skeleton* skel, QObject* parent)
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
#ifndef _DFFFRAMESTREEMODEL_HPP_
|
#ifndef _DFFFRAMESTREEMODEL_HPP_
|
||||||
#define _DFFFRAMESTREEMODEL_HPP_
|
#define _DFFFRAMESTREEMODEL_HPP_
|
||||||
#include <QAbstractItemModel>
|
#include <QAbstractItemModel>
|
||||||
#include <engine/RWTypes.hpp>
|
#include <rw/types.hpp>
|
||||||
|
|
||||||
class Model;
|
class Model;
|
||||||
class Skeleton;
|
class Skeleton;
|
||||||
|
|
|
@ -1,9 +1,10 @@
|
||||||
#include "ModelViewer.hpp"
|
#include "ModelViewer.hpp"
|
||||||
#include <widgets/ModelFramesWidget.hpp>
|
|
||||||
#include "ViewerWidget.hpp"
|
|
||||||
#include <data/Skeleton.hpp>
|
|
||||||
#include <objects/GameObject.hpp>
|
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
#include <widgets/ModelFramesWidget.hpp>
|
||||||
|
#include <data/Skeleton.hpp>
|
||||||
|
#include <engine/Animator.hpp>
|
||||||
|
#include <objects/GameObject.hpp>
|
||||||
|
#include "ViewerWidget.hpp"
|
||||||
|
|
||||||
ModelViewer::ModelViewer(ViewerWidget* viewer, QWidget* parent, Qt::WindowFlags f)
|
ModelViewer::ModelViewer(ViewerWidget* viewer, QWidget* parent, Qt::WindowFlags f)
|
||||||
: QWidget(parent, f), _world(nullptr), viewing(nullptr), skeleton(nullptr)
|
: QWidget(parent, f), _world(nullptr), viewing(nullptr), skeleton(nullptr)
|
||||||
|
@ -14,10 +15,15 @@ ModelViewer::ModelViewer(ViewerWidget* viewer, QWidget* parent, Qt::WindowFlags
|
||||||
viewerWidget = viewer;
|
viewerWidget = viewer;
|
||||||
viewerWidget->setMinimumSize(250,250);
|
viewerWidget->setMinimumSize(250,250);
|
||||||
|
|
||||||
|
animationWidget = new AnimationListWidget;
|
||||||
|
connect(animationWidget, SIGNAL(selectedAnimationChanged(Animation*)),
|
||||||
|
SLOT(playAnimation(Animation*)));
|
||||||
|
|
||||||
frames = new ModelFramesWidget;
|
frames = new ModelFramesWidget;
|
||||||
frames->setMaximumWidth(300);
|
frames->setMaximumWidth(300);
|
||||||
|
|
||||||
mainSplit->addWidget(frames);
|
mainSplit->addWidget(frames);
|
||||||
|
mainSplit->addWidget(animationWidget);
|
||||||
mainLayout->addWidget(mainSplit);
|
mainLayout->addWidget(mainSplit);
|
||||||
|
|
||||||
this->setLayout(mainLayout);
|
this->setLayout(mainLayout);
|
||||||
|
@ -58,3 +64,34 @@ void ModelViewer::showObject(uint16_t object)
|
||||||
skeleton = viewerWidget->currentObject()->skeleton;
|
skeleton = viewerWidget->currentObject()->skeleton;
|
||||||
frames->setModel(viewing, skeleton);
|
frames->setModel(viewing, skeleton);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void ModelViewer::loadAnimations(const QString& file)
|
||||||
|
{
|
||||||
|
std::ifstream dfile(file.toStdString().c_str());
|
||||||
|
AnimationList anims;
|
||||||
|
|
||||||
|
if(dfile.is_open())
|
||||||
|
{
|
||||||
|
dfile.seekg(0, std::ios_base::end);
|
||||||
|
size_t length = dfile.tellg();
|
||||||
|
dfile.seekg(0);
|
||||||
|
char *file = new char[length];
|
||||||
|
dfile.read(file, length);
|
||||||
|
|
||||||
|
LoaderIFP loader;
|
||||||
|
if( loader.loadFromMemory(file) ) {
|
||||||
|
for(auto& f : loader.animations) {
|
||||||
|
anims.push_back(f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
delete[] file;
|
||||||
|
}
|
||||||
|
|
||||||
|
animationWidget->setAnimations(anims);
|
||||||
|
}
|
||||||
|
|
||||||
|
void ModelViewer::playAnimation(Animation* anim)
|
||||||
|
{
|
||||||
|
viewerWidget->currentObject()->animator->setAnimation(anim);
|
||||||
|
}
|
||||||
|
|
|
@ -1,19 +1,20 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#ifndef _MODELVIEWER_HPP_
|
#ifndef _MODELVIEWER_HPP_
|
||||||
#define _MODELVIEWER_HPP_
|
#define _MODELVIEWER_HPP_
|
||||||
#include <engine/GameData.hpp>
|
|
||||||
#include <engine/GameWorld.hpp>
|
|
||||||
#include <QGLWidget>
|
|
||||||
#include <QTreeView>
|
#include <QTreeView>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QSplitter>
|
#include <QSplitter>
|
||||||
#include <QLayout>
|
#include <QLayout>
|
||||||
|
#include <engine/GameData.hpp>
|
||||||
|
#include <engine/GameWorld.hpp>
|
||||||
|
#include "AnimationListWidget.hpp"
|
||||||
|
|
||||||
class ViewerWidget;
|
class ViewerWidget;
|
||||||
class Model;
|
class Model;
|
||||||
class Skeleton;
|
class Skeleton;
|
||||||
class ModelFramesWidget;
|
class ModelFramesWidget;
|
||||||
|
class Animation;
|
||||||
|
|
||||||
class ModelViewer : public QWidget
|
class ModelViewer : public QWidget
|
||||||
{
|
{
|
||||||
|
@ -28,6 +29,9 @@ class ModelViewer : public QWidget
|
||||||
ViewerWidget* viewerWidget;
|
ViewerWidget* viewerWidget;
|
||||||
|
|
||||||
ModelFramesWidget* frames;
|
ModelFramesWidget* frames;
|
||||||
|
|
||||||
|
AnimationList loadedAnimations;
|
||||||
|
AnimationListWidget *animationWidget;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
ModelViewer(ViewerWidget *viewer = 0, QWidget* parent = 0, Qt::WindowFlags f = 0);
|
ModelViewer(ViewerWidget *viewer = 0, QWidget* parent = 0, Qt::WindowFlags f = 0);
|
||||||
|
@ -52,6 +56,9 @@ public slots:
|
||||||
void showObject(uint16_t object);
|
void showObject(uint16_t object);
|
||||||
|
|
||||||
void showData(GameWorld* world);
|
void showData(GameWorld* world);
|
||||||
|
|
||||||
|
void loadAnimations(const QString& file);
|
||||||
|
void playAnimation(Animation* anim);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -3,7 +3,6 @@
|
||||||
#define _OBJECTVIEWER_HPP_
|
#define _OBJECTVIEWER_HPP_
|
||||||
#include <engine/GameData.hpp>
|
#include <engine/GameData.hpp>
|
||||||
#include <engine/GameWorld.hpp>
|
#include <engine/GameWorld.hpp>
|
||||||
#include <QGLWidget>
|
|
||||||
#include <QTableView>
|
#include <QTableView>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
#include <QGridLayout>
|
#include <QGridLayout>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#include "ModelFramesWidget.hpp"
|
#include "ModelFramesWidget.hpp"
|
||||||
#include <render/Model.hpp>
|
#include <data/Model.hpp>
|
||||||
#include <glm/gtx/string_cast.hpp>
|
#include <glm/gtx/string_cast.hpp>
|
||||||
|
|
||||||
void ModelFramesWidget::updateInfoBox(Model* model, ModelFrame *f)
|
void ModelFramesWidget::updateInfoBox(Model* model, ModelFrame *f)
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include <QDockWidget>
|
#include <QDockWidget>
|
||||||
#include <QTreeView>
|
#include <QTreeView>
|
||||||
#include "models/DFFFramesTreeModel.hpp"
|
#include "models/DFFFramesTreeModel.hpp"
|
||||||
#include <engine/RWTypes.hpp>
|
#include <rw/types.hpp>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
#include <QLabel>
|
#include <QLabel>
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue