[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();
_mainLayout->addWidget(_sceneViewerContainer);
_sceneViewerContainer->show();
// Connect signals
connect(_modelSelector, &ModelSelector::onObjectSelected, _sceneViewer, &SceneViewer::addObject);
}
EditorPage::~EditorPage() {}

View File

@ -137,16 +137,16 @@ void SceneViewer::initializeGL() {
_dirLight = new DirLight();
Model* model = new Model("E:\\Repositories\\CollegeProjects\\CGAssignments\\FinalProject\\Models\\backpack\\backpack.obj");
Renderable* backpack = new Renderable(model);
backpack->move(glm::vec3(-5.0f, -2.0f, -2.0f));
backpack->updateBoundary();
_objects.push_back(backpack);
Renderable* backpack2 = new Renderable(model);
backpack2->makeLight();
backpack2->originalLight()->setIdealDistance(500);
_objects.push_back(backpack2);
//Model* model = new Model("E:\\Repositories\\CollegeProjects\\CGAssignments\\FinalProject\\Models\\backpack\\backpack.obj");
//Renderable* backpack = new Renderable(model);
//backpack->move(glm::vec3(-5.0f, -2.0f, -2.0f));
//backpack->updateBoundary();
//_objects.push_back(backpack);
//
//Renderable* backpack2 = new Renderable(model);
//backpack2->makeLight();
//backpack2->originalLight()->setIdealDistance(500);
//_objects.push_back(backpack2);
// Test Code End
_camera.setPosition(glm::vec3(0.0f, 0.0f, 10.0f));
@ -481,3 +481,13 @@ void SceneViewer::moveOperatingObject(const Ray& ray) {
_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 moveOperatingObject(const Ray& ray);
public:
void addObject(Model* model);
protected:
// OpenGL functions
virtual void initializeGL() override;