Remove large resources from the application. #16
@ -1,6 +1,6 @@
 | 
				
			|||||||
---
 | 
					---
 | 
				
			||||||
BasedOnStyle: Google
 | 
					BasedOnStyle: Google
 | 
				
			||||||
AlignAfterOpenBracket: AlwaysBreak
 | 
					AlignAfterOpenBracket: Align
 | 
				
			||||||
AlignArrayOfStructures: Left
 | 
					AlignArrayOfStructures: Left
 | 
				
			||||||
AlignConsecutiveAssignments: None
 | 
					AlignConsecutiveAssignments: None
 | 
				
			||||||
AlignConsecutiveDeclarations: None
 | 
					AlignConsecutiveDeclarations: None
 | 
				
			||||||
@ -23,6 +23,7 @@ EmptyLineAfterAccessModifier: Never
 | 
				
			|||||||
EmptyLineBeforeAccessModifier: LogicalBlock
 | 
					EmptyLineBeforeAccessModifier: LogicalBlock
 | 
				
			||||||
BinPackArguments: true
 | 
					BinPackArguments: true
 | 
				
			||||||
BinPackParameters: true
 | 
					BinPackParameters: true
 | 
				
			||||||
 | 
					BreakBeforeBraces: Linux
 | 
				
			||||||
BreakBeforeBinaryOperators: NonAssignment
 | 
					BreakBeforeBinaryOperators: NonAssignment
 | 
				
			||||||
BreakBeforeTernaryOperators: true
 | 
					BreakBeforeTernaryOperators: true
 | 
				
			||||||
BreakConstructorInitializers: AfterColon
 | 
					BreakConstructorInitializers: AfterColon
 | 
				
			||||||
 | 
				
			|||||||
@ -206,7 +206,6 @@ CheckOptions:
 | 
				
			|||||||
  llvm-else-after-return.WarnOnUnfixable: 'false'
 | 
					  llvm-else-after-return.WarnOnUnfixable: 'false'
 | 
				
			||||||
  llvm-qualified-auto.AddConstToQualified: 'false'
 | 
					  llvm-qualified-auto.AddConstToQualified: 'false'
 | 
				
			||||||
  misc-throw-by-value-catch-by-reference.CheckThrowTemporaries: 'true'
 | 
					  misc-throw-by-value-catch-by-reference.CheckThrowTemporaries: 'true'
 | 
				
			||||||
  misc-throw-by-value-catch-by-reference.MaxSize: '-1'
 | 
					 | 
				
			||||||
  misc-throw-by-value-catch-by-reference.WarnOnLargeObjects: 'false'
 | 
					  misc-throw-by-value-catch-by-reference.WarnOnLargeObjects: 'false'
 | 
				
			||||||
  misc-uniqueptr-reset-release.IncludeStyle: llvm
 | 
					  misc-uniqueptr-reset-release.IncludeStyle: llvm
 | 
				
			||||||
  modernize-avoid-bind.PermissiveParameterList: 'false'
 | 
					  modernize-avoid-bind.PermissiveParameterList: 'false'
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@ -5,7 +5,7 @@
 | 
				
			|||||||
**/.vscode/**
 | 
					**/.vscode/**
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# CMake build files
 | 
					# CMake build files
 | 
				
			||||||
**/cmake-build-debug/**
 | 
					**/cmake-build-*/**
 | 
				
			||||||
**/build/**
 | 
					**/build/**
 | 
				
			||||||
install
 | 
					install
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										23
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								README.md
									
									
									
									
									
								
							@ -195,29 +195,22 @@ on standalone builds.
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
#### Development
 | 
					#### Development
 | 
				
			||||||
 | 
					
 | 
				
			||||||
This project uses version `15.0.5` of `clang-format`.
 | 
					This project is using `clang-format` version `>=15.0.5`.
 | 
				
			||||||
Before merging any branch we should run `clang-tidy` followed by `clang-format`.
 | 
					On Ubuntu 24.04, clang-format 18 is available to install in apt repositories.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
git clone git@github.com:llvm/llvm-project.git -b llvmorg-15.0.5
 | 
					sudo apt install clang-format
 | 
				
			||||||
cd llvm-project
 | 
					 | 
				
			||||||
cmake -B build -DLLVM_ENABLE_PROJECTS=clang -DLLVM_ENABLE_RUNTIMES="libcxx;libcxxabi" -DCMAKE_BUILD_TYPE=Release -G "Unix Makefiles" llvm
 | 
					 | 
				
			||||||
cmake --build build -j $(nproc --ignore=2)
 | 
					 | 
				
			||||||
sudo cmake --build build -j $(nproc --ignore=2) --target install
 | 
					 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
If the `clang-format` version is any earlier than `15.0.0`,
 | 
					If `clang-format --version` is any earlier than `15.0.0`, running `clang-format` will fail because this project uses configuration options made available since `15.0.0`.
 | 
				
			||||||
running `clang-format` will fail because this project uses configuration options
 | 
					 | 
				
			||||||
made available since `15.0.0`.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
clang-format --version
 | 
					clang-format --version
 | 
				
			||||||
clang-format version 15.0.5 (git@github.com:llvm/llvm-project.git 154e88af7ec97d9b9f389e55d45bf07108a9a097)
 | 
					Ubuntu clang-format version 18.1.3 (1ubuntu1)
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
CLion has integration for IDE code reformatting actions with `clang-format`.
 | 
					CLion has integration for IDE code reformatting actions with `clang-format`.
 | 
				
			||||||
If you're using CLion, the `.clang-format` configuration will be picked up by
 | 
					If you're using CLion, the `.clang-format` configuration will be picked up by CLion automatically.
 | 
				
			||||||
CLion automatically.
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
`clang-tidy` can be run with the following commands.
 | 
					`clang-tidy` can be run with the following commands.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -226,14 +219,14 @@ CLion automatically.
 | 
				
			|||||||
cd qtk
 | 
					cd qtk
 | 
				
			||||||
# Build
 | 
					# Build
 | 
				
			||||||
cmake -B build && cmake --build build -- -j $(nproc)
 | 
					cmake -B build && cmake --build build -- -j $(nproc)
 | 
				
			||||||
clang-tidy -p build/ --fix --config-file=.clang-tidy src/*.cpp src/*.h app/*.cpp app/*.h
 | 
					clang-tidy -p build/ --fix --config-file=.clang-tidy src/**/*.cpp src/**/*.h example-app/*.cpp example-app/*.h
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Last we need to run `clang-format`, this can be done with the command directly.
 | 
					Last we need to run `clang-format`, this can be done with the command directly.
 | 
				
			||||||
This will reformat all the code in the repository.
 | 
					This will reformat all the code in the repository.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
```bash
 | 
					```bash
 | 
				
			||||||
clang-format -i --style=file:.clang-format src/app/*.cpp src/app/*.h src/qtk/*.cpp src/qtk/*.h example-app/*.cpp example-app/*.h
 | 
					clang-format -i --style=file:.clang-format src/**/*.cpp src/**/*.h example-app/*.cpp example-app/*.h
 | 
				
			||||||
```
 | 
					```
 | 
				
			||||||
 | 
					
 | 
				
			||||||
`clang-format` can be run with git integration (or CLion if you prefer).
 | 
					`clang-format` can be run with git integration (or CLion if you prefer).
 | 
				
			||||||
 | 
				
			|||||||
@ -58,8 +58,11 @@ void ExampleScene::init()
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
void ExampleScene::draw()
 | 
					void ExampleScene::draw()
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
  // No custom draw logic for this example.
 | 
					  // The base class method _must_ be called first, before additional logic.
 | 
				
			||||||
  Scene::draw();
 | 
					  Scene::draw();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  // No additional custom draw logic for this example.
 | 
				
			||||||
 | 
					  // QtkScene in Qtk desktop application is an example using custom draw logic.
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void ExampleScene::update()
 | 
					void ExampleScene::update()
 | 
				
			||||||
 | 
				
			|||||||
@ -72,7 +72,7 @@ namespace Qtk {
 | 
				
			|||||||
       *
 | 
					       *
 | 
				
			||||||
       * @param name Base name for the DebugConsole window.
 | 
					       * @param name Base name for the DebugConsole window.
 | 
				
			||||||
       */
 | 
					       */
 | 
				
			||||||
      inline void setTitle(QString name) {
 | 
					      inline void setTitle(const QString& name) {
 | 
				
			||||||
        setWindowTitle(name + " Debug Console");
 | 
					        setWindowTitle(name + " Debug Console");
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -17,12 +17,7 @@ int main(int argc, char * argv[]) {
 | 
				
			|||||||
  QApplication a(argc, argv);
 | 
					  QApplication a(argc, argv);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  auto window = MainWindow::getMainWindow();
 | 
					  auto window = MainWindow::getMainWindow();
 | 
				
			||||||
 | 
					 | 
				
			||||||
  // Qtk currently uses the decorator pattern to save / load scenes.
 | 
					 | 
				
			||||||
  // This is a temporary solution and will be improved in the future.
 | 
					 | 
				
			||||||
  auto emptyScene = new Qtk::SceneEmpty;
 | 
					 | 
				
			||||||
  window->getQtkWidget()->setScene(new QtkScene(emptyScene));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
  window->show();
 | 
					  window->show();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  return QApplication::exec();
 | 
					  return QApplication::exec();
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -27,7 +27,9 @@ MainWindow::MainWindow(QWidget * parent) : QMainWindow(parent) {
 | 
				
			|||||||
  // Initialize static container for all active QtkWidgets
 | 
					  // Initialize static container for all active QtkWidgets
 | 
				
			||||||
  auto qtkWidgets = findChildren<Qtk::QtkWidget *>();
 | 
					  auto qtkWidgets = findChildren<Qtk::QtkWidget *>();
 | 
				
			||||||
  for(auto & qtkWidget : qtkWidgets) {
 | 
					  for(auto & qtkWidget : qtkWidgets) {
 | 
				
			||||||
    qtkWidget->setScene(new Qtk::SceneEmpty);
 | 
					    // Qtk currently uses the decorator pattern to save / load scenes.
 | 
				
			||||||
 | 
					    // This is a temporary solution and will be improved in the future.
 | 
				
			||||||
 | 
					    qtkWidget->setScene(new QtkScene);
 | 
				
			||||||
    views_.emplace(qtkWidget->getScene()->getSceneName(), qtkWidget);
 | 
					    views_.emplace(qtkWidget->getScene()->getSceneName(), qtkWidget);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    // Add GUI 'view' toolbar option to show debug console.
 | 
					    // Add GUI 'view' toolbar option to show debug console.
 | 
				
			||||||
@ -77,7 +79,9 @@ Qtk::QtkWidget * MainWindow::getQtkWidget(int64_t index) {
 | 
				
			|||||||
  if(views_.size() <= index) {
 | 
					  if(views_.size() <= index) {
 | 
				
			||||||
    return Q_NULLPTR;
 | 
					    return Q_NULLPTR;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
  return views_.begin(index)->second;
 | 
					  auto it = views_.begin();
 | 
				
			||||||
 | 
					  std::advance(it, index);
 | 
				
			||||||
 | 
					  return it->second;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Qtk::QtkWidget * MainWindow::getQtkWidget(const QString & name) {
 | 
					Qtk::QtkWidget * MainWindow::getQtkWidget(const QString & name) {
 | 
				
			||||||
 | 
				
			|||||||
@ -14,7 +14,7 @@ using namespace Qtk;
 | 
				
			|||||||
 * Constructors, Destructors
 | 
					 * Constructors, Destructors
 | 
				
			||||||
 ******************************************************************************/
 | 
					 ******************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
QtkScene::QtkScene(Qtk::Scene * scene) : Qtk::SceneInterface(scene) {
 | 
					QtkScene::QtkScene() {
 | 
				
			||||||
  setSceneName("Qtk Scene");
 | 
					  setSceneName("Qtk Scene");
 | 
				
			||||||
  getCamera().getTransform().setTranslation(0.0f, 0.0f, 20.0f);
 | 
					  getCamera().getTransform().setTranslation(0.0f, 0.0f, 20.0f);
 | 
				
			||||||
  getCamera().getTransform().setRotation(-5.0f, 0.0f, 1.0f, 0.0f);
 | 
					  getCamera().getTransform().setRotation(-5.0f, 0.0f, 1.0f, 0.0f);
 | 
				
			||||||
 | 
				
			|||||||
@ -29,13 +29,13 @@
 | 
				
			|||||||
 *
 | 
					 *
 | 
				
			||||||
 * To create your own Scene from scratch see Qtk::Scene.
 | 
					 * To create your own Scene from scratch see Qtk::Scene.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class QtkScene : public Qtk::SceneInterface {
 | 
					class QtkScene : public Qtk::Scene {
 | 
				
			||||||
  public:
 | 
					  public:
 | 
				
			||||||
    /***************************************************************************
 | 
					    /***************************************************************************
 | 
				
			||||||
     * Contructors / Destructors
 | 
					     * Contructors / Destructors
 | 
				
			||||||
     **************************************************************************/
 | 
					     **************************************************************************/
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    QtkScene(Qtk::Scene * scene);
 | 
					    QtkScene();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ~QtkScene();
 | 
					    ~QtkScene();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -133,7 +133,7 @@ namespace Qtk {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
      // TODO: Use this signal in treeview and toolbox to update object
 | 
					      // TODO: Use this signal in treeview and toolbox to update object
 | 
				
			||||||
      // properties
 | 
					      // properties
 | 
				
			||||||
      void objectFocusChanged(const QString objectName);
 | 
					      void objectFocusChanged(QString objectName);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    protected:
 | 
					    protected:
 | 
				
			||||||
      /*************************************************************************
 | 
					      /*************************************************************************
 | 
				
			||||||
 | 
				
			|||||||
@ -46,7 +46,7 @@ void Qtk::TreeView::updateView(const Qtk::Scene * scene) {
 | 
				
			|||||||
void Qtk::TreeView::itemFocus(QTreeWidgetItem * item, int column) {
 | 
					void Qtk::TreeView::itemFocus(QTreeWidgetItem * item, int column) {
 | 
				
			||||||
  QString name = item->text(column);
 | 
					  QString name = item->text(column);
 | 
				
			||||||
  auto scene = MainWindow::getMainWindow()->getQtkWidget()->getScene();
 | 
					  auto scene = MainWindow::getMainWindow()->getQtkWidget()->getScene();
 | 
				
			||||||
  auto & transform = scene->getCamera().getTransform();
 | 
					  auto & transform = Qtk::Scene::getCamera().getTransform();
 | 
				
			||||||
  auto object = scene->getObject(name);
 | 
					  auto object = scene->getObject(name);
 | 
				
			||||||
  Transform3D * objectTransform;
 | 
					  Transform3D * objectTransform;
 | 
				
			||||||
  // If the object is a mesh or model, focus the camera on it.
 | 
					  // If the object is a mesh or model, focus the camera on it.
 | 
				
			||||||
 | 
				
			|||||||
@ -24,7 +24,7 @@ WidgetPlugin::WidgetPlugin(
 | 
				
			|||||||
    WidgetPlugin::Factory factory) :
 | 
					    WidgetPlugin::Factory factory) :
 | 
				
			||||||
    m_group(std::move(group)),
 | 
					    m_group(std::move(group)),
 | 
				
			||||||
    m_className(std::move(class_name)), m_includeFile(std::move(include)),
 | 
					    m_className(std::move(class_name)), m_includeFile(std::move(include)),
 | 
				
			||||||
    m_factory(std::move(factory)), m_objectName(class_name) {}
 | 
					    m_factory(std::move(factory)), m_objectName(m_className) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
WidgetPlugin::WidgetPlugin(QObject * parent) : QObject(parent) {}
 | 
					WidgetPlugin::WidgetPlugin(QObject * parent) : QObject(parent) {}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -36,7 +36,7 @@ class WidgetPluginCollection :
 | 
				
			|||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * @return QList of all custom widgets pointers.
 | 
					     * @return QList of all custom widgets pointers.
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    [[nodiscard]] QList<QDesignerCustomWidgetInterface *> customWidgets() const;
 | 
					    [[nodiscard]] QList<QDesignerCustomWidgetInterface *> customWidgets() const override;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  private:
 | 
					  private:
 | 
				
			||||||
    /***************************************************************************
 | 
					    /***************************************************************************
 | 
				
			||||||
 | 
				
			|||||||
@ -152,7 +152,7 @@ void Input::update() {
 | 
				
			|||||||
void Input::registerKeyPress(int k) {
 | 
					void Input::registerKeyPress(int k) {
 | 
				
			||||||
  auto it = FindKey((Qt::Key)k);
 | 
					  auto it = FindKey((Qt::Key)k);
 | 
				
			||||||
  if(it == sg_keyInstances.end()) {
 | 
					  if(it == sg_keyInstances.end()) {
 | 
				
			||||||
    sg_keyInstances.push_back(KeyInstance((Qt::Key)k, InputRegistered));
 | 
					    sg_keyInstances.emplace_back((Qt::Key)k, InputRegistered);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -163,15 +163,15 @@ void Input::registerKeyRelease(int k) {
 | 
				
			|||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Input::registerMousePress(Qt::MouseButton btn) {
 | 
					void Input::registerMousePress(Qt::MouseButton button) {
 | 
				
			||||||
  auto it = FindButton(btn);
 | 
					  auto it = FindButton(button);
 | 
				
			||||||
  if(it == sg_buttonInstances.end()) {
 | 
					  if(it == sg_buttonInstances.end()) {
 | 
				
			||||||
    sg_buttonInstances.push_back(ButtonInstance(btn, InputRegistered));
 | 
					    sg_buttonInstances.emplace_back(button, InputRegistered);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
void Input::registerMouseRelease(Qt::MouseButton btn) {
 | 
					void Input::registerMouseRelease(Qt::MouseButton button) {
 | 
				
			||||||
  auto it = FindButton(btn);
 | 
					  auto it = FindButton(button);
 | 
				
			||||||
  if(it != sg_buttonInstances.end()) {
 | 
					  if(it != sg_buttonInstances.end()) {
 | 
				
			||||||
    it->second = InputUnregistered;
 | 
					    it->second = InputUnregistered;
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
@ -187,8 +187,8 @@ Input::InputState Input::keyState(Qt::Key k) {
 | 
				
			|||||||
  return (it != sg_keyInstances.end()) ? it->second : InputInvalid;
 | 
					  return (it != sg_keyInstances.end()) ? it->second : InputInvalid;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Input::InputState Input::buttonState(Qt::MouseButton k) {
 | 
					Input::InputState Input::buttonState(Qt::MouseButton button) {
 | 
				
			||||||
  auto it = FindButton(k);
 | 
					  auto it = FindButton(button);
 | 
				
			||||||
  return (it != sg_buttonInstances.end()) ? it->second : InputInvalid;
 | 
					  return (it != sg_buttonInstances.end()) ? it->second : InputInvalid;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -211,11 +211,11 @@ namespace Qtk {
 | 
				
			|||||||
       */
 | 
					       */
 | 
				
			||||||
      inline Transform3D & getTransform() { return mTransform; }
 | 
					      inline Transform3D & getTransform() { return mTransform; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      inline std::string getVertexShader() const override {
 | 
					      [[nodiscard]] inline std::string getVertexShader() const override {
 | 
				
			||||||
        return mVertexShader;
 | 
					        return mVertexShader;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      inline std::string getFragmentShader() const override {
 | 
					      [[nodiscard]] inline std::string getFragmentShader() const override {
 | 
				
			||||||
        return mFragmentShader;
 | 
					        return mFragmentShader;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -127,11 +127,11 @@ namespace Qtk {
 | 
				
			|||||||
       */
 | 
					       */
 | 
				
			||||||
      inline Transform3D & getTransform() { return mTransform; }
 | 
					      inline Transform3D & getTransform() { return mTransform; }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      inline std::string getVertexShader() const override {
 | 
					      [[nodiscard]] inline std::string getVertexShader() const override {
 | 
				
			||||||
        return mVertexShader;
 | 
					        return mVertexShader;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      inline std::string getFragmentShader() const override {
 | 
					      [[nodiscard]] inline std::string getFragmentShader() const override {
 | 
				
			||||||
        return mFragmentShader;
 | 
					        return mFragmentShader;
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
@ -9,6 +9,8 @@
 | 
				
			|||||||
#ifndef QTK_MODELMESH_H
 | 
					#ifndef QTK_MODELMESH_H
 | 
				
			||||||
#define QTK_MODELMESH_H
 | 
					#define QTK_MODELMESH_H
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					#include <utility>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include <QOpenGLFunctions>
 | 
					#include <QOpenGLFunctions>
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#include "object.h"
 | 
					#include "object.h"
 | 
				
			||||||
@ -39,8 +41,8 @@ namespace Qtk {
 | 
				
			|||||||
       * @param type Type of texture in string format.
 | 
					       * @param type Type of texture in string format.
 | 
				
			||||||
       * @param path Path to the texture on disk.
 | 
					       * @param path Path to the texture on disk.
 | 
				
			||||||
       */
 | 
					       */
 | 
				
			||||||
      ModelTexture(const std::string & type, const std::string & path) :
 | 
					      ModelTexture(std::string  type, const std::string & path) :
 | 
				
			||||||
          mType(type), mPath(path) {
 | 
					          mType(std::move(type)), mPath(path) {
 | 
				
			||||||
        mTexture = OpenGLTextureFactory::initTexture(path.c_str());
 | 
					        mTexture = OpenGLTextureFactory::initTexture(path.c_str());
 | 
				
			||||||
        mID = mTexture->textureId();
 | 
					        mID = mTexture->textureId();
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
				
			|||||||
@ -104,7 +104,7 @@ namespace Qtk {
 | 
				
			|||||||
        return "Base Object has no vertex shader.";
 | 
					        return "Base Object has no vertex shader.";
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
      virtual inline std::string getFragmentShader() const {
 | 
					      [[nodiscard]] virtual inline std::string getFragmentShader() const {
 | 
				
			||||||
        return "Base Object has no fragment shader.";
 | 
					        return "Base Object has no fragment shader.";
 | 
				
			||||||
      }
 | 
					      }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user