[CORE][ADD] Add model from model selector

- Add slot API in sceneviewer
- Add connection in editor page widget
This commit is contained in:
Linloir 2022-12-19 00:42:38 +08:00
parent 64f65a2555
commit fe305c49aa
No known key found for this signature in database
GPG Key ID: 58EEB209A0F2C366
3 changed files with 26 additions and 10 deletions

View File

@ -49,6 +49,9 @@ EditorPage::EditorPage(QWidget* parent) :
_sceneViewer->show(); _sceneViewer->show();
_mainLayout->addWidget(_sceneViewerContainer); _mainLayout->addWidget(_sceneViewerContainer);
_sceneViewerContainer->show(); _sceneViewerContainer->show();
// Connect signals
connect(_modelSelector, &ModelSelector::onObjectSelected, _sceneViewer, &SceneViewer::addObject);
} }
EditorPage::~EditorPage() {} EditorPage::~EditorPage() {}

View File

@ -137,16 +137,16 @@ void SceneViewer::initializeGL() {
_dirLight = new DirLight(); _dirLight = new DirLight();
Model* model = new Model("E:\\Repositories\\CollegeProjects\\CGAssignments\\FinalProject\\Models\\backpack\\backpack.obj"); //Model* model = new Model("E:\\Repositories\\CollegeProjects\\CGAssignments\\FinalProject\\Models\\backpack\\backpack.obj");
Renderable* backpack = new Renderable(model); //Renderable* backpack = new Renderable(model);
backpack->move(glm::vec3(-5.0f, -2.0f, -2.0f)); //backpack->move(glm::vec3(-5.0f, -2.0f, -2.0f));
backpack->updateBoundary(); //backpack->updateBoundary();
_objects.push_back(backpack); //_objects.push_back(backpack);
//
Renderable* backpack2 = new Renderable(model); //Renderable* backpack2 = new Renderable(model);
backpack2->makeLight(); //backpack2->makeLight();
backpack2->originalLight()->setIdealDistance(500); //backpack2->originalLight()->setIdealDistance(500);
_objects.push_back(backpack2); //_objects.push_back(backpack2);
// Test Code End // Test Code End
_camera.setPosition(glm::vec3(0.0f, 0.0f, 10.0f)); _camera.setPosition(glm::vec3(0.0f, 0.0f, 10.0f));
@ -481,3 +481,13 @@ void SceneViewer::moveOperatingObject(const Ray& ray) {
_operatingObject->setPosition(_hitRecord.position()); _operatingObject->setPosition(_hitRecord.position());
} }
} }
void SceneViewer::addObject(Model* model) {
makeCurrent();
Model* newModel = model->copyToCurrentContext();
Renderable* newObject = new Renderable(newModel);
_selectedObject = newObject;
_operatingObject = newObject;
_objects.push_back(newObject);
parentWidget()->update();
}

View File

@ -69,6 +69,9 @@ private:
void rotateCamera(QMouseEvent* event); void rotateCamera(QMouseEvent* event);
void moveOperatingObject(const Ray& ray); void moveOperatingObject(const Ray& ray);
public:
void addObject(Model* model);
protected: protected:
// OpenGL functions // OpenGL functions
virtual void initializeGL() override; virtual void initializeGL() override;