Programming Quick Start
The primary goal of this quick start tutorial is to introduce you to C++ programming basics in UNIGINE. In the framework of this tutorial we are going to develop a Project which involves basic UNIGINE functionality (managing objects, lights, cameras; logging, console, intersections, controls, GUI, properties, etc). Upon the completion of this tutorial, you'll be able to solve the following tasks:
- What are the basic scene objects and coordinate system?
- How to log and print messages to console?
- How to save and load a world?
- How to close the application?
- How to work with smart pointers?
- How to create and delete nodes at runtime?
- How to create and set up a camera?
- How to create and set up light sources?
- How to create, apply and delete materials at runtime?
- How to manage existing scene objects?
- How to perform basic transformations (move, rotate, scale)?
- How to make your application frame rate independent?
- How to manage intersections?
- How to get and manage user inputs?
- How to implement game logic and use properties?
- How to create user interface?
Tutorial Structure#
For your convenience each of the sections of this tutorial is dedicated to solving a certain task (see the list above) and sections starting from 6 are divided into two sub-parts:
- Basic part - describing some basic examples of how to solve the task of the section, which can be used as a HOWTO.
- Project Progress - giving a detailed description of solving the task of the section in the framework of the Project and a video.
- Source Files - providing a source code that can be copied and pasted to the corresponding source files of your Project.
Tutorial Project Design Requirements#
Before we dive into developing our project let us describe the basic functions and appearance of our application.
Our first UNIGINE application is going to have the following features:
- One free-roaming camera.
- Three light sources to light our scene: world, projected and omni.
- Graphical user interface (see image above).
- Moving and rotating the initial set of objects (4 colored boxes) and changing their scale once in 2 seconds.
- Changing the time of the day in two modes:
- automatic - if the corresponding checkbox is checked.
- manual - by changing the slider position.
- Loading a default world by clicking the "Load World" button.
- Loading a mesh-file by clicking the "Load Mesh" button and performing the following actions:
- Specifying the file in the File Open Dialog.
- Setting the name and location coordinates for the object to be added to scene.
- Closing the application if the "Quit" button was clicked or if "Q" key was pressed on the keyboard.
- Selecting an object on the scene by clicking the right mouse button.
- Highlighting currently selected object by changing its material to the default mesh_base (using property-based logic).
- Deleting currently selected object (or all objects of the scene) using the "Delete" button and the combobox.
So, let's get started and make our first UNIGINE project!